<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Zabbix | VitePress</title>
    <meta name="description" content="A VitePress site">
    <link rel="preload stylesheet" href="/notebook/assets/style.3dbfd0c2.css" as="style">
    
    <script type="module" src="/notebook/assets/app.8aaa4cbe.js"></script>
    <link rel="preload" href="/notebook/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="modulepreload" href="/notebook/assets/chunks/framework.1336c4e5.js">
    <link rel="modulepreload" href="/notebook/assets/chunks/theme.20cddc0c.js">
    <link rel="modulepreload" href="/notebook/assets/可视化 _ 监控_Zabbix.md.71f2270e.lean.js">
    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
  </head>
  <body>
    <div id="app"><div class="Layout" data-v-255ec12d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-ae3e3f51></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-ae3e3f51> Skip to content </a><!--]--><!----><header class="VPNav" data-v-255ec12d data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-0937f67c><div class="container" data-v-0937f67c><div class="title" data-v-0937f67c><div class="VPNavBarTitle has-sidebar" data-v-0937f67c data-v-86d1bed8><a class="title" href="/notebook/" data-v-86d1bed8><!--[--><!--]--><!--[--><img class="VPImage logo" src="/notebook/Vue.png" alt data-v-8426fc1a><!--]--><!--[-->任硕的文档<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-0937f67c><div class="curtain" data-v-0937f67c></div><div class="content-body" data-v-0937f67c><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-0937f67c><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-0937f67c data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>Java学前端</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/HTML+JS.html" data-v-2f2cfafc><!--[-->HTML+JS<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/CSS.html" data-v-2f2cfafc><!--[-->CSS<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/Vue2+%E7%BB%84%E4%BB%B6.html" data-v-2f2cfafc><!--[-->Vue2+组件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/Vue3+%E7%BB%84%E4%BB%B6.html" data-v-2f2cfafc><!--[-->Vue3+组件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/React.html" data-v-2f2cfafc><!--[-->React<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>软件测试</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/%E6%B5%8B%E8%AF%95%E5%9F%BA%E7%A1%80.html" data-v-2f2cfafc><!--[-->测试基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95.html" data-v-2f2cfafc><!--[-->压力测试<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>多线程</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E5%B9%B6%E5%8F%91%20&amp;%20%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-2f2cfafc><!--[-->基础篇<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E5%B9%B6%E5%8F%91%20&amp;%20%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%B9%B6%E5%8F%91%E5%AE%8C%E5%96%84.html" data-v-2f2cfafc><!--[-->进阶篇<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>开发工具</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/Chrome.html" data-v-2f2cfafc><!--[-->Chrome<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/IDEA%E5%9F%BA%E7%A1%80.html" data-v-2f2cfafc><!--[-->IDEA基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/IDEA%E6%8F%92%E4%BB%B6.html" data-v-2f2cfafc><!--[-->IDEA插件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/VS%20Code.html" data-v-2f2cfafc><!--[-->VS Code<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>消息中间件</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/RabbitMQ.html" data-v-2f2cfafc><!--[-->RabbitMQ<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/RocketMQ.html" data-v-2f2cfafc><!--[-->RocketMQ<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/Kafka.html" data-v-2f2cfafc><!--[-->Kafka<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/Canal.html" data-v-2f2cfafc><!--[-->Canal<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-0937f67c data-v-f6a63727><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-f6a63727 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-0937f67c data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/renshuo123/renshuo123.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink no-icon" href="#" aria-label="twitter" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg></a><a class="VPSocialLink no-icon" href="https://github.com/" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg t="1676028692954" class="icon" ...</path></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-0937f67c data-v-40855f84 data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-a7b5672a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-a7b5672a><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><!----><!--[--><!--[--><!----><div class="group" data-v-40855f84><div class="item appearance" data-v-40855f84><p class="label" data-v-40855f84>Appearance</p><div class="appearance-action" data-v-40855f84><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-40855f84 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-40855f84><div class="item social-links" data-v-40855f84><div class="VPSocialLinks social-links-list" data-v-40855f84 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/renshuo123/renshuo123.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink no-icon" href="#" aria-label="twitter" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg></a><a class="VPSocialLink no-icon" href="https://github.com/" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg t="1676028692954" class="icon" ...</path></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-0937f67c data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-255ec12d data-v-5cfd5582><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-5cfd5582><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-5cfd5582><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-5cfd5582>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-5cfd5582 data-v-18201f51><button data-v-18201f51>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-255ec12d data-v-845b8fc6><div class="curtain" data-v-845b8fc6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-845b8fc6><span class="visually-hidden" id="sidebar-aria-label" data-v-845b8fc6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Java</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E6%96%B0%E7%89%B9%E6%80%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E9%9B%86%E5%90%88.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java集合</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java高级</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Linux</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Linux%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Linux基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Linux%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Linux新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Shell.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Shell脚本</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/%E5%AE%9E%E7%94%A8%E8%84%9A%E6%9C%AC.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>实用脚本</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/%E8%BD%AF%E4%BB%B6%E9%83%A8%E7%BD%B2.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>软件部署</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Nginx</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E5%AE%9E%E6%88%98%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>实战篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E9%9D%A2%E8%AF%95%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>面试篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SSM</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/Maven.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Maven</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/Spring.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Spring</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/SpringMVC.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringMVC</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/SpringBatch.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringBatch</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringBoot</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E5%BA%94%E7%94%A8%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>应用篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E6%96%B0%E7%89%B9%E6%80%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E8%BF%90%E7%BB%B4&amp;%E5%8E%9F%E7%90%86.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>运维&原理</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringCloud</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringCloud</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E5%BF%85%E5%A4%87/Sentinel.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Sentinel</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringSecurity</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E9%AB%98%E7%BA%A7%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity高级篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Mybatis & MybatisPlus</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/Mybatis.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Mybatis</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/MybatisPlus.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MybatisPlus</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/JPA.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JPA</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Git & ChatGPT</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Git.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Git</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Github.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Github</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/ChatGPT.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ChatGPT</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Jenkins.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Jenkins</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Netty.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Netty</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>数据库</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>MySQL</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%AE%BE%E8%AE%A1.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL设计</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%BF%90%E7%BB%B4.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL运维</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分库分表</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>Redis</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%8E%9F%E7%90%86.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis原理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis高级</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%AE%9E%E6%88%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis实战</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/%E6%9C%AC%E5%9C%B0%E7%BC%93%E5%AD%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>本地缓存</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>MongoDB</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MongoDB/%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MongoDB基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MongoDB/%E6%95%B4%E5%90%88.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MongoDB进阶</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>ElasticSearch</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/ElasticSearch/1%E3%80%81ES%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/ElasticSearch/3%E3%80%81ES%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES高级</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/influxdb.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>InfluxDB</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Neo4j.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Neo4j</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>高并发 & 秒杀 & 分布式</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E5%88%86%E5%B8%83%E5%BC%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分布式理论</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E5%BF%85%E5%A4%87/%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分布式锁</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E7%A7%92%E6%9D%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>秒杀</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E9%AB%98%E5%8F%AF%E7%94%A8.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高可用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E9%AB%98%E5%B9%B6%E5%8F%91.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高并发</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>云原生</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%BA%91%E5%8E%9F%E7%94%9F/Docker.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Docker</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%BA%91%E5%8E%9F%E7%94%9F/K8S.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>K8S</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible has-active" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>可视化 & 监控</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E7%9B%91%E6%8E%A7%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>监控基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E7%9B%91%E6%8E%A7%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>监控进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E5%8F%AF%E8%A7%86%E5%8C%96%E5%A4%A7%E5%B1%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>可视化大屏</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/Zabbix.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Zabbix</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>学前端</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>HTML+CSS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/HTML%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>HTML基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/CSS%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>CSS基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/%E7%BD%91%E9%A1%B5%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>网页进阶</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>JS+TS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/JS%20%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JS基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/JS%20%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JS进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/ES6%20%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES6基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/ES6%20%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES6进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/TypeScript.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>TS基础</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>NodeJS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Node基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Node进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>Vue</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3高级</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E6%96%B0%E8%AF%AD%E6%B3%95.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3新语法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue2/Vue2%E9%A1%B9%E7%9B%AE.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>小程序</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>小程序基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>小程序优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/uniapp.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>uniapp</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%A1%B9%E7%9B%AE.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>计算机基础</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>数据结构</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>操作系统</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>设计模式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>计算机网络</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/UML.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>UML</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E7%AE%97%E6%B3%95/LeetCode.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>LeetCode</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>项目实战</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>云尚办公</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E4%BA%91%E5%B0%9A%E5%8A%9E%E5%85%AC/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>小兔鲜</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E8%BF%9B%E9%98%B6%E7%AF%871.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇1</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E8%BF%9B%E9%98%B6%E7%AF%872.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇2</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>地图</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BE/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BE/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>苍穹外卖</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E8%8B%8D%E7%A9%B9%E5%A4%96%E5%8D%96/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>黑马头条</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E8%BF%9B%E9%98%B6%E7%AF%872.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇2</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E9%AB%98%E7%BA%A7%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高级篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E6%94%AF%E4%BB%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>支付</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%A1%B9%E7%9B%AE%E6%8E%A8%E8%8D%90.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目推荐</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0" data-v-845b8fc6 data-v-9b797284><!----><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/team.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>团队成员</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-255ec12d data-v-669faec9><div class="VPDoc has-sidebar has-aside" data-v-669faec9 data-v-6b87e69f><!--[--><!--]--><div class="container" data-v-6b87e69f><div class="aside" data-v-6b87e69f><div class="aside-curtain" data-v-6b87e69f></div><div class="aside-container" data-v-6b87e69f><div class="aside-content" data-v-6b87e69f><div class="VPDocAside" data-v-6b87e69f data-v-3f215769><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-3f215769 data-v-ff0f39c8><div class="content" data-v-ff0f39c8><div class="outline-marker" data-v-ff0f39c8></div><div class="outline-title" data-v-ff0f39c8>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-ff0f39c8><span class="visually-hidden" id="doc-outline-aria-label" data-v-ff0f39c8> Table of Contents for current page </span><ul class="root" data-v-ff0f39c8 data-v-d0ee3533><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-6b87e69f><div class="content-container" data-v-6b87e69f><!--[--><!--]--><!----><main class="main" data-v-6b87e69f><div style="position:relative;" class="vp-doc _notebook_%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7_Zabbix" data-v-6b87e69f><div><h1 id="zabbix" tabindex="-1">Zabbix <a class="header-anchor" href="#zabbix" aria-label="Permalink to &quot;Zabbix&quot;">​</a></h1><h2 id="zabbix-入门" tabindex="-1">Zabbix 入门 <a class="header-anchor" href="#zabbix-入门" aria-label="Permalink to &quot;Zabbix 入门&quot;">​</a></h2><h3 id="zabbix-概述" tabindex="-1">Zabbix 概述 <a class="header-anchor" href="#zabbix-概述" aria-label="Permalink to &quot;Zabbix 概述&quot;">​</a></h3><blockquote><p>Zabbix 是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix 使用灵活的通知机制，允许用户为几乎任何事件配置基于邮件的告警，这样可以快速反馈服务器的问题。基于已存储的数据，Zabbix 提供了出色的报告和数据可视化功能。Zabbix 支持轮询和被动捕获。</p></blockquote><blockquote><p>基于 Web 的前端页面确保您的网络状态和服务器健康状况可以从任何地方进行评估。在经过适当的配置后，Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于拥有少量服务器的小型组织，还是拥有大量服务器的大型公司而言，同样适用。</p></blockquote><h3 id="基础架构" tabindex="-1">基础架构 <a class="header-anchor" href="#基础架构" aria-label="Permalink to &quot;基础架构&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201027642.png" alt="image-20230420102725573" style="zoom:80%;"><blockquote><p>核心组件主要是 Agent 和 Server，其中 Agent 主要负责采集数据并通过主动或者被动的方式采集数据发送到 Server/Proxy，除此之外，为了扩展监控项，Agent 还支持执行自定义脚本。Server 主要负责接收 Agent 发送的监控信息，并进行汇总存储，触发告警等。</p></blockquote><blockquote><p>Zabbix Server 将收集的监控数据存储到 Zabbix Database 中。Zabbix Database 支持常用的关系型数据库，如果 MySQL、PostgreSQL、Oracle 等，默认是 MySQL，并提供 Zabbix Web页面（PHP 编写）数据查询。</p></blockquote><h3 id="zabbix-和-prometheus" tabindex="-1">Zabbix 和 Prometheus <a class="header-anchor" href="#zabbix-和-prometheus" aria-label="Permalink to &quot;Zabbix 和 Prometheus&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201028190.png" alt="image-20230420102812122" style="zoom:80%;"><blockquote><p><strong>从开发语言上看</strong>，为了应对高并发和快速迭代的需求，监控系统的开发语言已经慢慢从 C 语言转移到 Go。不得不说，Go 凭借简洁的语法和优雅的并发，在 Java占据业务开发，C 占领底层开发的情况下，准确定位中间件开发需求，在当前开源中间件产品中被广泛应用。</p></blockquote><blockquote><p><strong>从系统成熟度上看</strong>，Zabbix 是老牌的监控系统：Zabbix 是在 1998 年就出现的，系统功能比较稳定，成熟度较高。而 Prometheus 是最近几年才诞生的，虽然功能还在不断迭代更新，但站在巨人的肩膀之上，在架构设计上借鉴了很多老牌监控系统的经验；</p></blockquote><blockquote><p><strong>从数据存储方面来看</strong>，Zabbix 采用关系数据库保存，这极大限制了 Zabbix 采集的性能，而 Prometheus 自研一套高性能的时序数据库，在 V3 版本可以达到每秒千万级别的数据存储，对接第三方时序数据库扩展历史数据的存储</p></blockquote><blockquote><p><strong>从配置复杂度上看</strong>，Prometheus只有一个核心 server 组件，一条命令便可启动，相比，其他系统配置相对麻烦；</p></blockquote><blockquote><p><strong>从社区活跃度上看</strong>，目前 Zabbix 比较活跃，但基本都是国内的公司参与，Prometheus 在这方面占据绝对优势，社区活跃度虽然不如，但是受到 CNCF 的支持，后期的发展值得期待；</p></blockquote><blockquote><p>**从容器支持角度看，**由于 Zabbix 出现得比较早，当时容器还没有诞生，自然对容器的支持也比较差。而 Prometheus 的动态发现机制，不仅可以支持 swarm 原生集群，还支持Kubernetes 容器集群的监控，是目前容器监控最好解决方案。</p></blockquote><blockquote><p>如果监控的是物理机，用 Zabbix，Zabbix 在传统监控系统中，尤其是在服务器相关监控方面，占据绝对优势。甚至环境变动不会很频繁的情况下，Zabbix 也会比 Prometheus 好使；但如果是云环境的话，除非是 Zabbix 玩的非常溜，可以做各种定制，否则还是Prometheus 吧，毕竟人家就是干这个的。Prometheus 开始成为主导及容器监控方面的标配，并且在未来可见的时间内被广泛应用。如果是刚刚要上监控系统的话，不用犹豫了，Prometheus 准没错</p></blockquote><h2 id="zabbix-部署" tabindex="-1">Zabbix 部署 <a class="header-anchor" href="#zabbix-部署" aria-label="Permalink to &quot;Zabbix 部署&quot;">​</a></h2><h3 id="集群规划" tabindex="-1">集群规划 <a class="header-anchor" href="#集群规划" aria-label="Permalink to &quot;集群规划&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201032136.png" alt="image-20230420103218077" style="zoom:80%;"><h3 id="准备工作" tabindex="-1">准备工作 <a class="header-anchor" href="#准备工作" aria-label="Permalink to &quot;准备工作&quot;">​</a></h3><p>如果集群开启，先关闭集群。因为安装 Zabbix 前，需要重启虚拟机</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 关闭 3 台节点防火墙</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 分别在 102、103 和 104 上执行</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">firewalld.service</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">firewalld.service</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 关闭 3 台节点上的 SELinux</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/selinux/config</span></span></code></pre></div><p>修改如下内容</p><div class="language-properties"><button title="Copy Code" class="copy"></button><span class="lang">properties</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># This file controls the state of SELinux on the system.</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># SELINUX= can take one of these three values:</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># enforcing - SELinux security policy is enforced.</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># permissive - SELinux prints warnings instead of enforcing.</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># disabled - No SELinux policy is loaded.</span></span>
<span class="line"><span style="color:#F07178;">SELINUX</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">disabled</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># SELINUXTYPE= can take one of these two values:</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># targeted - Targeted processes are protected,</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># mls - Multi Level Security protection.</span></span>
<span class="line"><span style="color:#F07178;">SELINUXTYPE</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">targeted</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 重启服务器</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">reboot</span></span></code></pre></div><h4 id="配置-zabbix-yum-源" tabindex="-1">配置 Zabbix yum 源 <a class="header-anchor" href="#配置-zabbix-yum-源" aria-label="Permalink to &quot;配置 Zabbix yum 源&quot;">​</a></h4><blockquote><p>三台均执行</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 安装 zabbix 的软件仓库配置包，这个包包含了 yum（软件包管理器）的配置文件。</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rpm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-Uvh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 安装 Software Collections 仓库</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-y</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">centos-release-scl</span></span></code></pre></div><h4 id="修改-zabbix-仓库配置文件" tabindex="-1">修改 zabbix 仓库配置文件 <a class="header-anchor" href="#修改-zabbix-仓库配置文件" aria-label="Permalink to &quot;修改 zabbix 仓库配置文件&quot;">​</a></h4><p>hadoop102、hadoop103、hadoop104 三台节点，依次执行如下步骤。</p><p><strong>查看原始 zabbix.repo 文件</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/yum.repos.d/zabbix.repo</span></span></code></pre></div><p>查看内容如下</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">http://repo.zabbix.com/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-frontend</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">frontend</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">http://repo.zabbix.com/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/frontend</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">0</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-debuginfo</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">debuginfo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">http://repo.zabbix.com/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/debuginfo/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">0</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-non-supported</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">non-supported</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">http://repo.zabbix.com/non-supported/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span></code></pre></div><p><strong>执行以下命令完成全局替换，修改为阿里云镜像</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">sed</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/</span></span>
<span class="line"><span style="color:#C3E88D;">g</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/yum.repos.d/zabbix.repo</span></span></code></pre></div><p><strong>查看修改之后的 zabbix.repo 文件</strong></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo cat /etc/yum.repos.d/zabbix.repo</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-frontend</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">frontend</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/frontend</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">0</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-debuginfo</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">debuginfo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/debuginfo/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">0</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-non-supported</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">non-supported</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span></code></pre></div><p><strong>打开/etc/yum.repos.d/zabbix.repo 文件，启用 zabbix-web 仓库</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-frontend</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">frontend</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/frontend</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-debuginfo</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">debuginfo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/</span><span style="color:#A6ACCD;">$base</span></span>
<span class="line"><span style="color:#FFCB6B;">arch/debuginfo/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">0</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix-non-supported</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">name</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">Zabbix</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">Official</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Repository</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">non-supported</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> $basearch</span></span>
<span class="line"><span style="color:#A6ACCD;">baseurl</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/</span><span style="color:#A6ACCD;">$basearch</span><span style="color:#C3E88D;">/</span></span>
<span class="line"><span style="color:#A6ACCD;">enabled</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgkey</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX</span></span>
<span class="line"><span style="color:#A6ACCD;">gpgcheck</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span></code></pre></div><h3 id="安装-zabbix" tabindex="-1">安装 Zabbix <a class="header-anchor" href="#安装-zabbix" aria-label="Permalink to &quot;安装 Zabbix&quot;">​</a></h3><p><strong>在 hadoop102、hadoop103、hadoop104 三台节点分别执行以下安装命令</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-y</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-server-mysql</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-web-mysql-scl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-apache-conf-scl</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-y</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-y</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span></code></pre></div><h3 id="配置-zabbix" tabindex="-1">配置 Zabbix <a class="header-anchor" href="#配置-zabbix" aria-label="Permalink to &quot;配置 Zabbix&quot;">​</a></h3><p><strong>创建 zabbix 数据库</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">mysql</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-uroot</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p123456</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-e</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">create database zabbix character set utf8 collate utf8_bin</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div><p><strong>导入 Zabbix 建表语句</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">zcat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/usr/share/doc/zabbix-server-mysql-5.0.18/create.sql.gz</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">mysql</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-uroot</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p123456</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix</span></span></code></pre></div><p><strong>配置 Zabbix_Server（hadoop102）</strong></p><p><strong>修改 zabbix-server 配置文件</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/zabbix/zabbix_server.conf</span></span>
<span class="line"><span style="color:#A6ACCD;">DBHost</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">hadoop102</span></span>
<span class="line"><span style="color:#A6ACCD;">DBName</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">zabbix</span></span>
<span class="line"><span style="color:#A6ACCD;">DBUser</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">root</span></span>
<span class="line"><span style="color:#A6ACCD;">DBPassword</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">123456</span></span></code></pre></div><p><strong>配置 Zabbix_Agent（三台节点）</strong></p><p><strong>修改 zabbix-agent 配置文件</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/zabbix/zabbix_agentd.conf</span></span>
<span class="line"><span style="color:#A6ACCD;">Server</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">hadoop102</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">#ServerActive=127.0.0.1</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">#Hostname=Zabbix server</span></span></code></pre></div><p><strong>配置 Zabbix_Web 时区</strong></p><p><strong>修改/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 文件</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">zabbix</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">user</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">apache</span></span>
<span class="line"><span style="color:#FFCB6B;">group</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">apache</span></span>
<span class="line"><span style="color:#FFCB6B;">listen</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock</span></span>
<span class="line"><span style="color:#FFCB6B;">listen.acl_users</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">apache</span></span>
<span class="line"><span style="color:#FFCB6B;">listen.allowed_clients</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">127.0</span><span style="color:#C3E88D;">.0.1</span></span>
<span class="line"><span style="color:#FFCB6B;">pm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dynamic</span></span>
<span class="line"><span style="color:#FFCB6B;">pm.max_children</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">50</span></span>
<span class="line"><span style="color:#FFCB6B;">pm.start_servers</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5</span></span>
<span class="line"><span style="color:#FFCB6B;">pm.min_spare_servers</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5</span></span>
<span class="line"><span style="color:#FFCB6B;">pm.max_spare_servers</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">35</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[session.save_handler]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">files</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[session.save_path]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#FFCB6B;">/var/opt/rh/rh-php72/lib/php/session/</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[max_execution_time]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">300</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[memory_limit]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">128</span><span style="color:#C3E88D;">M</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[post_max_size]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">16</span><span style="color:#C3E88D;">M</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[upload_max_filesize]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span><span style="color:#C3E88D;">M</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[max_input_time]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">300</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[max_input_vars]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">10000</span></span>
<span class="line"><span style="color:#FFCB6B;">php_value[date.timezone]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Asia/Shanghai</span></span></code></pre></div><h3 id="启动停止-zabbix" tabindex="-1">启动停止 Zabbix <a class="header-anchor" href="#启动停止-zabbix" aria-label="Permalink to &quot;启动停止 Zabbix&quot;">​</a></h3><h4 id="启动-zabbix" tabindex="-1">启动 Zabbix <a class="header-anchor" href="#启动-zabbix" aria-label="Permalink to &quot;启动 Zabbix&quot;">​</a></h4><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-server</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">httpd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rh-php72-php-fpm</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-server</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">httpd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rh-php72-php-fpm</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span></code></pre></div><h4 id="停止-zabbix" tabindex="-1">停止 Zabbix <a class="header-anchor" href="#停止-zabbix" aria-label="Permalink to &quot;停止 Zabbix&quot;">​</a></h4><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-server</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">httpd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rh-php72-php-fpm</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-server</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">httpd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rh-php72-php-fpm</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zabbix-agent</span></span></code></pre></div><h3 id="连接-zabbix-web-数据库" tabindex="-1">连接 Zabbix_Web 数据库 <a class="header-anchor" href="#连接-zabbix-web-数据库" aria-label="Permalink to &quot;连接 Zabbix_Web 数据库&quot;">​</a></h3><p><strong>浏览器访问</strong>：<a href="http://hadoop102/zabbix/" target="_blank" rel="noreferrer">http://hadoop102/zabbix/</a></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201039665.png" alt="image-20230420103906598" style="zoom:80%;"><p><strong>检查配置</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201039506.png" alt="image-20230420103941433" style="zoom:80%;"><p><strong>配置数据库</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201040683.png" alt="image-20230420104001609" style="zoom:80%;"><p><strong>配置 zabbix-server</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201040846.png" alt="image-20230420104030769" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201040615.png" alt="image-20230420104043538" style="zoom:80%;"><h3 id="登录-zabbix" tabindex="-1">登录 Zabbix <a class="header-anchor" href="#登录-zabbix" aria-label="Permalink to &quot;登录 Zabbix&quot;">​</a></h3><blockquote><p><strong>用户名：Admin 密码：zabbix</strong></p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201041360.png" alt="image-20230420104112296" style="zoom:80%;"><p><strong>点击 User Settings，语言设成中文</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201041708.png" alt="image-20230420104131640" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201041542.png" alt="image-20230420104149480" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201042251.png" alt="image-20230420104204168" style="zoom:80%;"><blockquote><p>注意：这里默认会对 Zabbix Server 进行监控，但是我们可以看到目前该主机是红色，不可用的状态，原因是主机的地址不能使用 127.0.0.1 需要后续我们单独配置。</p></blockquote><h2 id="zabbix-使用" tabindex="-1">Zabbix 使用 <a class="header-anchor" href="#zabbix-使用" aria-label="Permalink to &quot;Zabbix 使用&quot;">​</a></h2><h3 id="zabbix-术语" tabindex="-1">Zabbix 术语 <a class="header-anchor" href="#zabbix-术语" aria-label="Permalink to &quot;Zabbix 术语&quot;">​</a></h3><p>**主机（Host）**一台你想监控的网络设备，用 IP 或域名表示。</p><p>**监控项（Item）**你想要接收的主机的特定数据，一个度量数据。</p><p>**触发器（Trigger）**一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式。</p><p>**动作（Action）**一个对事件做出反应的预定义的操作，比如邮件通知。</p><h3 id="zabbix-实战" tabindex="-1">Zabbix 实战 <a class="header-anchor" href="#zabbix-实战" aria-label="Permalink to &quot;Zabbix 实战&quot;">​</a></h3><p>这里我们以监控 Hdfs 集群为例，给大家进行演示，所以首先先执行 start-dfs.sh，启动 HDFS</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201044232.png" alt="image-20230420104449172" style="zoom:80%;"><p><strong>创建 Host</strong></p><p><strong>点击配置/主机/创建主机</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201045813.png" alt="image-20230420104515713" style="zoom:80%;"><p><strong>配置主机（Host）</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201046672.png" alt="image-20230420104616596" style="zoom:80%;"><p><strong>查看新增（Host）</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201046702.png" alt="image-20230420104635631" style="zoom:80%;"><p><strong>重复以上步骤，再创建 hadoop103、hadoop104 主机。</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201046812.png" alt="image-20230420104648735" style="zoom:80%;"><p><strong>创建监控项（Items）</strong></p><p><strong>点击监控项（Items）</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201047282.png" alt="image-20230420104713176" style="zoom:80%;"><p><strong>点击创建监控项（Create Item）</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201047168.png" alt="image-20230420104729095" style="zoom:80%;"><p><strong>配置监控项（Item）</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201048891.png" alt="image-20230420104808809" style="zoom:80%;"><p><strong>查看创建的监控项</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201048604.png" alt="image-20230420104831530" style="zoom:80%;"><p><strong>查看监控项最新数据</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201048019.png" alt="image-20230420104844952" style="zoom:80%;"><h3 id="创建触发器-trigger" tabindex="-1">创建触发器（Trigger） <a class="header-anchor" href="#创建触发器-trigger" aria-label="Permalink to &quot;创建触发器（Trigger）&quot;">​</a></h3><p><strong>点击配置/主机/触发器</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201049587.png" alt="image-20230420104912480" style="zoom:80%;"><p><strong>点击创建触发器</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201049465.png" alt="image-20230420104931399" style="zoom:80%;"><p><strong>编辑触发器</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201049052.png" alt="image-20230420104955984" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201050179.png" alt="image-20230420105008119" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201050866.png" alt="image-20230420105020792" style="zoom:80%;"><h3 id="创建动作-action" tabindex="-1">创建动作（Action） <a class="header-anchor" href="#创建动作-action" aria-label="Permalink to &quot;创建动作（Action）&quot;">​</a></h3><p><strong>点击配置/动作/创建动作</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201050113.png" alt="image-20230420105052038" style="zoom:80%;"><p><strong>编辑动作（Action）</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201051314.png" alt="image-20230420105109240" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201051760.png" alt="image-20230420105119712" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201052890.png" alt="image-20230420105204823" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201052432.png" alt="image-20230420105217367" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201052711.png" alt="image-20230420105229632" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201052954.png" alt="image-20230420105244889" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201052616.png" alt="image-20230420105259552" style="zoom:80%;"><h3 id="申请邮箱" tabindex="-1">申请邮箱 <a class="header-anchor" href="#申请邮箱" aria-label="Permalink to &quot;申请邮箱&quot;">​</a></h3><p>邮件报警，可以采用 126、163、qq 等邮箱。下面以 163 邮箱为例。</p><p><strong>登录邮箱后，点击设置-&gt;POP3/SMTP/IMAP</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201053725.png" alt="image-20230420105338614" style="zoom:80%;"><p><strong>开启 SMTP 服务</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201053909.png" alt="image-20230420105354847" style="zoom:80%;"><p><strong>一定要记住授权码</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201054779.png" alt="image-20230420105410711" style="zoom:80%;"><h3 id="创建报警媒介类型-media-type" tabindex="-1">创建报警媒介类型（Media type） <a class="header-anchor" href="#创建报警媒介类型-media-type" aria-label="Permalink to &quot;创建报警媒介类型（Media type）&quot;">​</a></h3><p><strong>点击管理/报警媒介类型/Email</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201055429.png" alt="image-20230420105531357" style="zoom:80%;"><p><strong>编辑 Email，这里配置的 email 用于发送报警邮件。</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201055395.png" alt="image-20230420105548320" style="zoom:80%;"><p><strong>测试 Email</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201056119.png" alt="image-20230420105610048" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201056606.png" alt="image-20230420105620542" style="zoom:80%;"><h3 id="给动作中配置的用户配置-email" tabindex="-1">给动作中配置的用户配置 Email <a class="header-anchor" href="#给动作中配置的用户配置-email" aria-label="Permalink to &quot;给动作中配置的用户配置 Email&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201058458.png" alt="image-20230420105809392" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201058810.png" alt="image-20230420105826743" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201058993.png" alt="image-20230420105840919" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201058160.png" alt="image-20230420105850088" style="zoom:80%;"><h3 id="测试" tabindex="-1">测试 <a class="header-anchor" href="#测试" aria-label="Permalink to &quot;测试&quot;">​</a></h3><p><strong>关闭集群中的 HDFS，会有如下效果</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">stop-dfs.sh</span></span></code></pre></div><p><strong>查看仪表盘故障信息</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201101167.png" alt="image-20230420110139094" style="zoom:80%;"><p><strong>查看邮件，接收故障信息</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201102130.png" alt="image-20230420110203056" style="zoom:80%;"><h2 id="创建模板" tabindex="-1">创建模板 <a class="header-anchor" href="#创建模板" aria-label="Permalink to &quot;创建模板&quot;">​</a></h2><blockquote><p>模板是可以方便地应用于多个主机的一组实体。 实体可以是监控项、触发器、图形、应用、web 场景等。由于生产上的许多主机是相同或类似的，所以，为一个主机创建的一组实体（项目，触发器，图形，...）可能对其它主机也适用。当然，你可以将它们复制到每个新的主机上，但需要费很大功夫。</p></blockquote><blockquote><p>相反，使用模板，可以将它们复制到一个模板，然后根据需要将模板应用于尽可能多的主机。因此，使用模板是减少工作量并简化 Zabbix 配置的好方法。另外，使用模板还有一个好处是当所有主机都需要更改时，只需要在模板上更改某些内容将会将更改应用到所有链接的主机。</p></blockquote><h3 id="点击配置-模板-创建模板" tabindex="-1">点击配置/模板/创建模板 <a class="header-anchor" href="#点击配置-模板-创建模板" aria-label="Permalink to &quot;点击配置/模板/创建模板&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201103012.png" alt="image-20230420110332916" style="zoom:80%;"><p><strong>配置模板名称/群组</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201103891.png" alt="image-20230420110348823" style="zoom:80%;"><p><strong>配置监控项</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201104278.png" alt="image-20230420110407199" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201104268.png" alt="image-20230420110418198" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201105379.png" alt="image-20230420110553296" style="zoom:80%;"><h3 id="配置触发器" tabindex="-1">配置触发器 <a class="header-anchor" href="#配置触发器" aria-label="Permalink to &quot;配置触发器&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201106579.png" alt="image-20230420110639505" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201106419.png" alt="image-20230420110650343" style="zoom:80%;"><h3 id="配置动作" tabindex="-1">配置动作 <a class="header-anchor" href="#配置动作" aria-label="Permalink to &quot;配置动作&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201107193.png" alt="image-20230420110711119" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201107576.png" alt="image-20230420110723504" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201107391.png" alt="image-20230420110733334" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201107290.png" alt="image-20230420110746224" style="zoom:80%;"><h3 id="为-hadoop103-应用模板" tabindex="-1">为 hadoop103 应用模板 <a class="header-anchor" href="#为-hadoop103-应用模板" aria-label="Permalink to &quot;为 hadoop103 应用模板&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201108934.png" alt="image-20230420110807831" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201108374.png" alt="image-20230420110817295" style="zoom:67%;"><h3 id="测试-1" tabindex="-1">测试 <a class="header-anchor" href="#测试-1" aria-label="Permalink to &quot;测试&quot;">​</a></h3><p>➢ <strong>启动 hadoop 集群</strong></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sbin/start-dfs.sh</span></span></code></pre></div><p>➢ <strong>停止 hadoop 集群</strong></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sbin/stop-dfs.sh</span></span></code></pre></div><p>➢ <strong>查看报警邮件</strong></p><h2 id="zabbix-和-grafana-集成" tabindex="-1">Zabbix 和 Grafana 集成 <a class="header-anchor" href="#zabbix-和-grafana-集成" aria-label="Permalink to &quot;Zabbix 和 Grafana 集成&quot;">​</a></h2><blockquote><p>grafana 是一款采用 Go 语言编写的开源应用，主要用于大规模指标数据的可视化展现，是网络架构和应用分析中最流行的<strong>时序数据展示</strong>工具，目前已经支持绝大部分常用的时序数据库。下载地址：<a href="https://grafana.com/grafana/download" target="_blank" rel="noreferrer">https://grafana.com/grafana/download</a></p></blockquote><h3 id="上传并解压" tabindex="-1">上传并解压 <a class="header-anchor" href="#上传并解压" aria-label="Permalink to &quot;上传并解压&quot;">​</a></h3><p>➢ 将 grafana-enterprise-8.1.2-1.x86_64.rpm 上传至/opt/software/目录下，安装：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">grafana-enterprise-8.1.2-1.x86_64.rpm</span></span></code></pre></div><p>➢ 启动 Grafana</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">grafana-server</span></span></code></pre></div><p>➢ 打开 web：<a href="http://hadoop102:3000" target="_blank" rel="noreferrer">http://hadoop102:3000</a>,默认用户名和密码：admin</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201110872.png" alt="image-20230420111019773" style="zoom:80%;"><h3 id="快速入门" tabindex="-1">快速入门 <a class="header-anchor" href="#快速入门" aria-label="Permalink to &quot;快速入门&quot;">​</a></h3><h4 id="创建-dashboard" tabindex="-1">创建 Dashboard <a class="header-anchor" href="#创建-dashboard" aria-label="Permalink to &quot;创建 Dashboard&quot;">​</a></h4><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201110712.png" alt="image-20230420111052612" style="zoom:80%;"><h4 id="新建-panel" tabindex="-1">新建 panel <a class="header-anchor" href="#新建-panel" aria-label="Permalink to &quot;新建 panel&quot;">​</a></h4><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201111071.png" alt="image-20230420111140993" style="zoom:80%;"><p><strong>选择数据源，此处选择 Grafana 提供的随机测试数据</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201111891.png" alt="image-20230420111158798" style="zoom:80%;"><h4 id="选择合适的可视化类型" tabindex="-1">选择合适的可视化类型 <a class="header-anchor" href="#选择合适的可视化类型" aria-label="Permalink to &quot;选择合适的可视化类型&quot;">​</a></h4><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201112256.png" alt="image-20230420111218168" style="zoom:80%;"><h4 id="保存-dashboard-和-panel-并命名" tabindex="-1">保存 Dashboard 和 panel，并命名 <a class="header-anchor" href="#保存-dashboard-和-panel-并命名" aria-label="Permalink to &quot;保存 Dashboard 和 panel，并命名&quot;">​</a></h4><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201112221.png" alt="image-20230420111241142" style="zoom:80%;"><h3 id="集成-zabbix" tabindex="-1">集成 Zabbix <a class="header-anchor" href="#集成-zabbix" aria-label="Permalink to &quot;集成 Zabbix&quot;">​</a></h3><h4 id="配置数据源" tabindex="-1">配置数据源 <a class="header-anchor" href="#配置数据源" aria-label="Permalink to &quot;配置数据源&quot;">​</a></h4><p>使用 Grafana 与其他系统集成时，需要配置对应的 DataSource</p><p><strong>点击下图所示按钮，增加数据源</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201113144.png" alt="image-20230420111322071" style="zoom:80%;"><p><strong>选择所需数据源</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201113099.png" alt="image-20230420111337024" style="zoom:80%;"><p><strong>如没有所需数据源，点击下图所示地址，获取更多数据源</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201113395.png" alt="image-20230420111351326" style="zoom:80%;"><p><strong>搜索 zabbix，并点击搜索结果</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201114226.png" alt="image-20230420111407158" style="zoom:80%;"><p><strong>按照所需插件的说明进行部署</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201114949.png" alt="image-20230420111421838" style="zoom:67%;"><p><strong>以下是插件部署步骤</strong></p><p>安装插件</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo grafana-cli plugins install alexanderzobnin-zabbix-app</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201115563.png" alt="image-20230420111522507" style="zoom:80%;"><p>重启 Grafana</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo systemctl restart grafana-server</span></span></code></pre></div><p>启用插件，点击设置/插件</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201117653.png" alt="image-20230420111749584" style="zoom:80%;"><p>搜索 zabbix，并点击搜索结果</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201118369.png" alt="image-20230420111805295" style="zoom:80%;"><p>启用 Zabbix 插件</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201118849.png" alt="image-20230420111818775" style="zoom:80%;"><h4 id="配置-zabbix-数据源" tabindex="-1">配置 zabbix 数据源 <a class="header-anchor" href="#配置-zabbix-数据源" aria-label="Permalink to &quot;配置 zabbix 数据源&quot;">​</a></h4><p>新增数据源</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201118065.png" alt="image-20230420111841991" style="zoom:80%;"><p>搜索 zabbix，并点击搜索结果</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201119577.png" alt="image-20230420111924502" style="zoom:80%;"><p>配置数据源</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201119804.png" alt="image-20230420111955717" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201120784.png" alt="image-20230420112009688" style="zoom:80%;"><h4 id="集成案例" tabindex="-1">集成案例 <a class="header-anchor" href="#集成案例" aria-label="Permalink to &quot;集成案例&quot;">​</a></h4><p><strong>为方便展示效果，在 Zabbix 中为 hadoop102 主机应用一个 Zabbix 内置的Linux 系统监控模板。</strong></p><p>找到 hadoop102 主机</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201120204.png" alt="image-20230420112036103" style="zoom:80%;"><p>点击模板，搜索 linux，并选择 Template OS Linux by Zabbix agent</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201121507.png" alt="image-20230420112103404" style="zoom:80%;"><p>点击更新</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201121582.png" alt="image-20230420112126510" style="zoom:80%;"><p><strong>集成 Grafana，展示模板中的系统监控项</strong></p><p>点击 Dashboards，找到前边创建的 Test 看板</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201121033.png" alt="image-20230420112144920" style="zoom:80%;"><p>新建 panel</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201122068.png" alt="image-20230420112159992" style="zoom:80%;"><p>选择 Zabbix 数据源</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201122055.png" alt="image-20230420112216982" style="zoom:80%;"><p>选择要展示的监控项</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201122447.png" alt="image-20230420112231376" style="zoom:80%;"><p>选择合适的图标类型</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201440020.png" alt="image-20230420144012938" style="zoom:80%;"><p>保存配置</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201440350.png" alt="image-20230420144029278" style="zoom:80%;"><h2 id="集成第三方告警平台睿象云" tabindex="-1">集成第三方告警平台睿象云 <a class="header-anchor" href="#集成第三方告警平台睿象云" aria-label="Permalink to &quot;集成第三方告警平台睿象云&quot;">​</a></h2><blockquote><p>邮件通知常会出现接收不及时的问题，为确保通知信息被及时接收，可通过配置 Zabbix或者 Grafana 与第三方平台告警平台集成，进而通过第三方平台提供的多种告警媒介（例如电话，短信）等发送告警信息。本文以第三方告警平台<strong>睿象云</strong>为例，进行集成演示。</p></blockquote><h3 id="注册睿象云账号" tabindex="-1">注册睿象云账号 <a class="header-anchor" href="#注册睿象云账号" aria-label="Permalink to &quot;注册睿象云账号&quot;">​</a></h3><p>集成睿象云之前须在其官网进行注册并登录，注册时需填入个人手机号和电子邮箱，以</p><p>下是其官方网站 <a href="https://www.aiops.com" target="_blank" rel="noreferrer">https://www.aiops.com</a>。登录之后会看到如下界面。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201441862.png" alt="image-20230420144147778" style="zoom:80%;"><h3 id="获取睿象云-ca-的-appkey" tabindex="-1">获取睿象云 CA 的 Appkey <a class="header-anchor" href="#获取睿象云-ca-的-appkey" aria-label="Permalink to &quot;获取睿象云 CA 的 Appkey&quot;">​</a></h3><p>点击 CA 智能告警平台</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201442655.png" alt="image-20230420144220589" style="zoom:80%;"><p>点击集成</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201442825.png" alt="image-20230420144251749" style="zoom:80%;"><p>选择 Zabbix</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201443635.png" alt="image-20230420144312557" style="zoom:80%;"><p>填入应用名称，并点击“保存并获取应用 key”</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201443024.png" alt="image-20230420144342936" style="zoom:80%;"><p>得到 AppKey 之后，配置 Zabbix</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201444496.png" alt="image-20230420144401422" style="zoom:80%;"><h3 id="和-zabbix-集成" tabindex="-1">和 Zabbix 集成 <a class="header-anchor" href="#和-zabbix-集成" aria-label="Permalink to &quot;和 Zabbix 集成&quot;">​</a></h3><p>查看 Zabbix 脚本目录</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/zabbix/zabbix_server.conf</span></span></code></pre></div><p>查看 AlertScriptsPath</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201444303.png" alt="image-20230420144439219" style="zoom:80%;"><p>切换到 Zabbix 脚本目录</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">cd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">AlertScriptsPath</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">路径</span></span></code></pre></div><p>获取 Cloud Alert Agent 包：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">wget</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.0.tar.gz</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201445779.png" alt="image-20230420144527718" style="zoom:80%;"><p>解压、安装</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">tar</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-zxvf</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ca_zabbix_release-4.0.0.tar.gz</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">cloudalert/bin/install.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">睿象云的</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Appkey</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201445977.png" alt="image-20230420144555887" style="zoom:80%;"><p>在 zabbix server 管理界面查看是否添加成功</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201446197.png" alt="image-20230420144612109" style="zoom:67%;"><h3 id="配置分派策略" tabindex="-1">配置分派策略 <a class="header-anchor" href="#配置分派策略" aria-label="Permalink to &quot;配置分派策略&quot;">​</a></h3><p>分派策略可以配置，哪些应用的告警信息，发送给哪些用户。</p><p>点击“配置”→“分派策略”→“新建分派</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201446196.png" alt="image-20230420144642119" style="zoom:80%;"><p>配置具体分派策略</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201446702.png" alt="image-20230420144657622" style="zoom:80%;"><h3 id="配置通知策略" tabindex="-1">配置通知策略 <a class="header-anchor" href="#配置通知策略" aria-label="Permalink to &quot;配置通知策略&quot;">​</a></h3><p>通知策略，可以配置被分派人接收告警的通知方式，通知时间，通知延时等等。</p><p>1）点击“配置”→“通知策略”→“新建通知”</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201447767.png" alt="image-20230420144720694" style="zoom:80%;"><p>配置具体的通知策略</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201447735.png" alt="image-20230420144734652" style="zoom:80%;"><h3 id="禁用-zabbix-中的-send-email-的动作" tabindex="-1">禁用 zabbix 中的 send_email 的动作 <a class="header-anchor" href="#禁用-zabbix-中的-send-email-的动作" aria-label="Permalink to &quot;禁用 zabbix 中的 send_email 的动作&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201447287.png" alt="image-20230420144753196" style="zoom:80%;"><h3 id="配置-cloud-alert-action-的触发条件" tabindex="-1">配置 Cloud Alert Action 的触发条件 <a class="header-anchor" href="#配置-cloud-alert-action-的触发条件" aria-label="Permalink to &quot;配置 Cloud Alert Action 的触发条件&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304201448474.png" alt="image-20230420144813404" style="zoom:80%;"><h3 id="测试电话、短信和邮件通知" tabindex="-1">测试电话、短信和邮件通知 <a class="header-anchor" href="#测试电话、短信和邮件通知" aria-label="Permalink to &quot;测试电话、短信和邮件通知&quot;">​</a></h3><p>我们将 102、103、104 上的 datanode 停掉，随后 Zabbix 的触发器会被触发，触发</p><p>的动作是交给睿象云发送告警信息。按照本文的配置，告警信息会以邮件、短信和电话的方</p><p>式发送到注册时填入的手机号码。</p><h3 id="卸载-cloud-alert" tabindex="-1">卸载 Cloud Alert <a class="header-anchor" href="#卸载-cloud-alert" aria-label="Permalink to &quot;卸载 Cloud Alert&quot;">​</a></h3><p><strong>Web 设置卸载</strong></p><blockquote><p>➢ 删除报警媒介 cloudalert media。</p><p>➢ 删除用户群组 cloudalert group。</p><p>➢ 删除用户 cloudalert。</p><p>➢ 删除动作 cloudalert action。</p></blockquote><p>在执行 install.sh 脚本的时候就会添加这些.</p><p><strong>脚本文件卸载</strong></p><blockquote><p>删除脚本 AlertScriptsPath 路径下 的 cloudalert 文件夹</p></blockquote><h1 id="mysql数据可视化" tabindex="-1">MySQL数据可视化 <a class="header-anchor" href="#mysql数据可视化" aria-label="Permalink to &quot;MySQL数据可视化&quot;">​</a></h1><p><a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247496969&amp;idx=1&amp;sn=f1f4e9d3cbc6f98ee445545c255b77f7&amp;chksm=fc2c4901cb5bc0172968a93ad4ea9aec6a178915e979e3017e200ec58f8ea3959a593bb5cb49&amp;mpshare=1&amp;scene=23&amp;srcid=0511LBqC22cEiYp8ML6SJ0UC&amp;sharer_sharetime=1652200090861&amp;sharer_shareid=29b8a04db1dbd975e3bf4e9f47e7ac67#rd" target="_blank" rel="noreferrer">5分钟搞定！这款颜值爆表的数据可视化工具，你值得拥有！ (qq.com)</a></p><h2 id="简介" tabindex="-1">简介 <a class="header-anchor" href="#简介" aria-label="Permalink to &quot;简介&quot;">​</a></h2><p>今天体验了一把Metabase，确实是一款开箱即用的好工具，搭建起来仅需5分钟。Metabase生成的图表也非常漂亮，使用也很方便，而且对于多表分析也无需手写SQL。如果大家有数据可视化方面的需求，不妨试试它！</p><ul><li>项目地址：<a href="https://github.com/metabase/metabase" target="_blank" rel="noreferrer">https://github.com/metabase/metabase</a></li><li>官方文档：<a href="https://www.metabase.com/docs/latest/" target="_blank" rel="noreferrer">https://www.metabase.com/docs/latest/</a></li></ul><p>Metabase是一款简单、快捷的BI（数据可视化）工具，在Github上已有<code>27k+Star</code>，可见其是非常流行的。</p><ul><li>使用Docker搭建非常快速，5分钟即可完成搭建和设置；</li><li>人人可用的数据可视化工具，你不需要懂SQL；</li><li>提供了丰富的仪表盘界面，真正颜值在线的工具，支持数据自动刷新；</li><li>支持自定义SQL查询，适合懂SQL的人使用；</li><li>强大的数据透视功能，可以根据数据自动生成仪表板；</li><li>可以进行多表数据的关联分析，并且无需手写SQL。</li></ul><p>下面是一张由Metabase生成的仪表盘，还是挺炫酷的。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.5/202205121229858.png" alt="image-20220512122929784" style="zoom:80%;"><h2 id="安装和启动" tabindex="-1">安装和启动 <a class="header-anchor" href="#安装和启动" aria-label="Permalink to &quot;安装和启动&quot;">​</a></h2><ul><li>官方地址：<a href="https://github.com/metabase/metabase" target="_blank" rel="noreferrer">https://github.com/metabase/metabase</a></li><li>官方文档：<a href="https://www.metabase.com/docs/latest/" target="_blank" rel="noreferrer">https://www.metabase.com/docs/latest/</a></li></ul><p><code>可以直接官网下载jar包运行，然后访问localhost:3000即可</code></p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">java </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">jar metabase</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">jar</span></span></code></pre></div><blockquote><p>使用Docker安装Metabase非常简单，下面我们将采用此种方式安装。</p></blockquote><ul><li>首先下载Metabase的Docker镜像，仅<code>400M</code>大小，非常小巧；</li></ul><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker pull metabase</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">metabase</span></span></code></pre></div><ul><li>接下来使用如下命令运行Metabase服务；</li></ul><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker run </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">p </span><span style="color:#F78C6C;">3000</span><span style="color:#A6ACCD;">:</span><span style="color:#F78C6C;">3000</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">--</span><span style="color:#A6ACCD;">name metabase </span><span style="color:#89DDFF;">\</span></span>
<span class="line"><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">v </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">mydata</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">metabase</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">data:</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">metabase</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">data </span><span style="color:#89DDFF;">\</span></span>
<span class="line"><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">e </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">MB_DB_FILE=/metabase-data/metabase.db</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">\</span></span>
<span class="line"><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">d metabase</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">metabase</span></span></code></pre></div><ul><li>运行过程中，可以使用如下命令查看日志；</li></ul><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker logs </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">f metabase</span></span></code></pre></div><ul><li>从日志中我们很容易看出，Metabase又是一款Java开发的神器，当输出如下日志时，代表启动成功了。</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241847260.png" alt="image-20220724184747069" style="zoom:67%;"><ul><li>最后开启防火墙的<code>3000</code>端口，以供外部访问。</li></ul><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">firewall</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">cmd </span><span style="color:#89DDFF;">--</span><span style="color:#A6ACCD;">zone</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">public </span><span style="color:#89DDFF;">--</span><span style="color:#A6ACCD;">add</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">port</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">3000</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">tcp </span><span style="color:#89DDFF;">--</span><span style="color:#A6ACCD;">permanent</span></span>
<span class="line"><span style="color:#A6ACCD;">firewall</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">cmd </span><span style="color:#89DDFF;">--</span><span style="color:#A6ACCD;">reload</span></span></code></pre></div><h2 id="连接和基本配置" tabindex="-1">连接和基本配置 <a class="header-anchor" href="#连接和基本配置" aria-label="Permalink to &quot;连接和基本配置&quot;">​</a></h2><blockquote><p>在使用Metabase之前，我们还需要一些配置。</p></blockquote><ul><li>首先通过如下地址访问Metabase，有一个欢迎界面，访问地址：<a href="http://192.168.22.130:3000/" target="_blank" rel="noreferrer">http://192.168.22.130:3000/</a></li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241849308.png" alt="image-20220724184904252" style="zoom:67%;"><ul><li>然后选择语言，Metabase的国际化做的还是挺好的，支持很多种语言；</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241849521.png" alt="image-20220724184941462" style="zoom:67%;"><ul><li>接下来创建一个管理员账户；</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241850577.png" alt="image-20220724185037514" style="zoom:50%;"><ul><li>然后选择数据库，Metabase支持的数据库种类也挺丰富的；</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241851520.png" alt="image-20220724185108457" style="zoom:50%;"><ul><li>配置数据库连接信息；</li></ul><p>注意：当出现连接不上数据库的情况时，可能原因是用户未开放远程连接权限，如下操作即可</p><div class="language-sql"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">mysql </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">uroot </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">p123456</span></span>
<span class="line"><span style="color:#F78C6C;">GRANT</span><span style="color:#A6ACCD;"> ALL PRIVILEGES </span><span style="color:#F78C6C;">ON</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">*</span><span style="color:#A6ACCD;">.</span><span style="color:#89DDFF;">*</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">TO</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">root</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;">@</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">%</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> IDENTIFIED </span><span style="color:#F78C6C;">BY</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">123456</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">WITH</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">GRANT</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">OPTION</span><span style="color:#A6ACCD;">;</span></span>
<span class="line"><span style="color:#A6ACCD;">FLUSH PRIVILEGES;</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241859760.png" alt="image-20220724185937683" style="zoom:50%;"><ul><li>选择是否允许匿名收集使用事件；</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241901691.png" alt="image-20220724190134615" style="zoom:50%;"><ul><li>设置完成之后就可以进入Metabase的主界面了。</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241902900.png" alt="image-20220724190230808" style="zoom:50%;"><h2 id="开始使用" tabindex="-1">开始使用 <a class="header-anchor" href="#开始使用" aria-label="Permalink to &quot;开始使用&quot;">​</a></h2><p>这里使用示例数据库：最下面的Sample</p><blockquote><p>Metabase内置了H2数据库，里面有一些示例数据，下面我们使用该数据来演示下它的基本使用。</p></blockquote><ul><li>首先我们打开示例数据库看下，里面有哪些数据，基本就是订单、商品、用户这些数据表；</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241905761.png" alt="image-20220724190518705" style="zoom:67%;"><ul><li>我们打开<code>Orders</code>表可以查看表中数据；</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207241905045.png" alt="image-20220724190532961" style="zoom:50%;"><ul><li>在Metabase中，一张可视化图表被称之为<code>问题</code>，我们下面来制作一张<code>2019-2020年商品销售额增长趋势图</code>，先通过<code>过滤器</code>设置过滤条件为<code>Created At</code>；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJkqJx5IvjXnb6xM97icQ0XDcAJxuxDfDRkVHSE5m1ib6NHJe0G59mBSGA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>然后进行条件设置并添加过滤器；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJH9CmK8elueZZtEZrEpibL9kVicu9MiaYSJbka1jfm3Ur4ATEks4mTmydw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>然后通过<code>聚合</code>功能，设置聚合条件为<code>总和-&gt;Total</code>；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJD582ISVdyJI0wFvgyp8IaqNSJSlLW5zzRssC35OEFxUyHyMqXfT0VA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>再设置分组条件为<code>Created At</code>，并按月进行分组；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJqMQoxcR3kcsg8PGLjNWSMo8dFFjUIKOTq2YLVBMnIWr78ZfsEo121Q/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>之后就会生成一张趋势折线图了，通过左下角的<code>可视化</code>按钮，我们可以切换图表；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJcPzMGQP6QJY4pXDrUhQwjnD4SVd7pS3VJQE41hl7TvOQla0hNdmQjw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>支持的图表还是挺多的，最后点击<code>保存</code>按钮可以进行保存；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJHPKfXLMicLGUrq44Kib5ibicKm5kJMlDH1pzKU7NP4iaLx5leGbBtXzTyEw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>我们还可以使用顶部的<code>加号</code>按钮创建仪表盘；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJuoDiaw587gMxkG4wR0f6E9ibZc4sDqKu1NIyAZzQCm8eWbfhx3ODiagkg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>然后将图表都添加到仪表盘中去，一个<code>电商平台的销售看板</code>就完成了。</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJwocUibTXXjythhIj1mBK6scyShtrch1MvRYfwkibbWACyKOfeCZbdURw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="高级" tabindex="-1">高级 <a class="header-anchor" href="#高级" aria-label="Permalink to &quot;高级&quot;">​</a></h2><blockquote><p>Metabase的功能远不只与此，下面再来介绍一些它的高级用法。</p></blockquote><h3 id="透视数据表" tabindex="-1">透视数据表 <a class="header-anchor" href="#透视数据表" aria-label="Permalink to &quot;透视数据表&quot;">​</a></h3><blockquote><p>透视是个非常神奇的功能，当我们拿到一堆数据不知道如何分析时，使用它能为我们自动生成各种图表，说不定就有你想要的结果。</p></blockquote><ul><li>下面我们来透视下<code>Orders</code>表，点击闪电按钮即可使用；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJoI29LDHohy79301F4QdGC7jmBicMnjAck641RvEic7URexkzKR0bUPxA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>这时Metabase将自动生成一个仪表板，分析一些数据，比如总共的订单量、每个商品的销量、每个商品分类的销量，大家可以找找自己感兴趣的数据；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJDgicjescrjhTOswsbsHdP1Qe4wdbjmcQ89dfybbqtHic8mibWHCaWYmtg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>点击右侧的放大按钮，可以根据条件进行更精细化的分析，比如时间，这里按时间维度分析了订单的各种情况。</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJWGFI2VWTycNL8qTDoEOtgiacYibSJpgl7wtC69ZMoNu9aGicvJ7kKCUOA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="自定义首页" tabindex="-1">自定义首页 <a class="header-anchor" href="#自定义首页" aria-label="Permalink to &quot;自定义首页&quot;">​</a></h3><blockquote><p>通过标记功能，我们可以把感兴趣的内容固定到首页去。</p></blockquote><ul><li>比如我们对之前的<code>某电商平台销售看板</code>比较感兴趣，就可以将它进行标记；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJSuDE0VcXiaJFOc994Rz4bvH6dqWNEF9cYRDq49cljcDS9cRJZH6kCUQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>标记完成后就可以在首页方便地进行查看了。</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJkmLVUn6gEThOzVNHMAjpHA3yuGG2w6GEazMvVbrpJgicrUhtN2zDWVw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="自定义sql查询" tabindex="-1">自定义SQL查询 <a class="header-anchor" href="#自定义sql查询" aria-label="Permalink to &quot;自定义SQL查询&quot;">​</a></h3><blockquote><p>有时候我们分析的数据比较复杂，可以自定义SQL来实现。</p></blockquote><ul><li>可以点击<code>创建问题</code>按钮，然后来创建<code>原生查询</code>；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJZ2e0LDBFIrNMVFDt2q3uTK9L5uAibe81y4Yibia111EL5wpicVSX5nrOyA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>然后选择好数据库，输入自定义SQL就可以进行查询了。</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJZUppD5aAusx6nApFxCljldaSGb0aQJn9wfyjuJrqGvmtvsxtvo1IjA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="数据表关联" tabindex="-1">数据表关联 <a class="header-anchor" href="#数据表关联" aria-label="Permalink to &quot;数据表关联&quot;">​</a></h3><blockquote><p>有时候我们进行数据分析时，需要多张表的数据，此时可以使用数据表关联功能，无需手写SQL即可实现。</p></blockquote><ul><li>比如说我们想<code>按分类统计商品销量</code>，分类信息在<code>Products</code>表中，销量信息在<code>Orders</code>表中，我们可以通过<code>显示编辑器</code>来选择<code>关联</code>功能；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJ23Goic46AWs2ecFviakuAh2gv1fwrOR2GJEUMP9KoxcoXTZVwfyriafkg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>然后管理<code>Orders</code>表和<code>Products</code>表，再对销量进行求和后按商品分类进行分组即可实现；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJCxOJfTvBr7oGq31vHRdZAOBNzaB47UjNjKbgDK8RDypqxXgWkoHPdQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>接下来我们就可以看到各个商品按分类的销量统计图了。</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJE2W04AnVI7lVRrbwIia5kFvUs6p9hUbJuXSFKFZOZDkXhJMcFQyUAfw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="管理员设置" tabindex="-1">管理员设置 <a class="header-anchor" href="#管理员设置" aria-label="Permalink to &quot;管理员设置&quot;">​</a></h3><blockquote><p>通过管理员设置功能，我们可以修改Metabase的系统设置，比如语言设置、用户管理、数据库管理等。</p></blockquote><ul><li>点击<code>设置-&gt;管理员</code>即可切换到管理员进行设置；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJP6hYJjCcQAZVSuLjeq2saV0oprnPZpP5bpN8BW7Vzx6dVCS4AZMFKA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>在<code>设置</code>中，我们可以进行一些基础设置；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJomVAvQtqo1aialrHByrjEIre5hRnjzcb0Zx33f7KwtJAew4akV8FRjQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>在<code>人员</code>中可以进行用户管理；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJlnGsYokS1yA6mlGVpmA5DtmIbuty3OiaOm8cWlhokmIvkJsXeJFgavw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>在<code>数据源</code>中可以管理各个数据库的连接信息，我们之前一直使用的示例数据就是存在<code>H2</code>数据库中的；</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJXRtS5m33G5oSPkvpy3X0ibrt4iacT9OPmcarq8RxUOgaSx6tQprWTU2w/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>在<code>权限</code>中可以进行权限管理。</li></ul><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlkprliby2MBRRC6VrCxf2XJKwPlIAfaaoORuFXu5ENJ66UJ5SeddVdnFReF1Df4iavwGWrskud9D9g/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h1 id="其他监控" tabindex="-1">其他监控 <a class="header-anchor" href="#其他监控" aria-label="Permalink to &quot;其他监控&quot;">​</a></h1><h2 id="uptime-kuma-简易监控系统⭐" tabindex="-1">Uptime Kuma 简易监控系统⭐ <a class="header-anchor" href="#uptime-kuma-简易监控系统⭐" aria-label="Permalink to &quot;Uptime Kuma 简易监控系统⭐&quot;">​</a></h2><blockquote><p>最近介绍了很多监控相关的系统，今天又发现一个很简易美观好用的在线监控系统 -- <strong>Uptime Kuma</strong>。这个系统算是最近推荐的几个监控系统中比较简洁、美观的，而且使用简单，支持多种服务，支持多类型通知。总体来说还是很值得尝试的一个系统，心动了就快点尝试下吧。</p></blockquote><p>项目地址：<a href="https://github.com/louislam/uptime-kuma" target="_blank" rel="noreferrer">https://github.com/louislam/uptime-kuma</a></p><h3 id="简介-1" tabindex="-1">简介 <a class="header-anchor" href="#简介-1" aria-label="Permalink to &quot;简介&quot;">​</a></h3><p><img src="https://mmbiz.qpic.cn/mmbiz_png/4XgGs2SeJoHPP0kX4hqBP4KVX9S2DK6LYOgsMd3RJYW3cqyqrefLOy4axpm4eCwQF4JKjyKmHXQWYn9Inosh4g/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><strong>Uptime Kuma</strong> 是一个开源的监控工具，功能全面，使用简单，还支持自托管服务，并且限制更少。</p><h3 id="使用方法" tabindex="-1">使用方法 <a class="header-anchor" href="#使用方法" aria-label="Permalink to &quot;使用方法&quot;">​</a></h3><h4 id="安装系统" tabindex="-1">安装系统 <a class="header-anchor" href="#安装系统" aria-label="Permalink to &quot;安装系统&quot;">​</a></h4><p>使用 docker 安装最简单，一条命令即可搞定，建议开启VPN，不然速度较慢</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">run</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--restart=always</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3001</span><span style="color:#C3E88D;">:3001</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">uptime-kuma:/app/data</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--name</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">uptime-kuma</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">louislam/uptime-kuma:1</span></span></code></pre></div><p>或者需要安装相关环境,前提：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">Node.js &gt;= 14</span></span>
<span class="line"><span style="color:#A6ACCD;">Git</span></span>
<span class="line"><span style="color:#A6ACCD;">pm2 - For run in background</span></span></code></pre></div><p>安装命令：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># Update your npm to the latest version</span></span>
<span class="line"><span style="color:#FFCB6B;">npm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">npm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-g</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">git</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">clone</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://github.com/louislam/uptime-kuma.git</span></span>
<span class="line"><span style="color:#82AAFF;">cd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">uptime-kuma</span></span>
<span class="line"><span style="color:#FFCB6B;">npm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">run</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">setup</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Option 1. Try it</span></span>
<span class="line"><span style="color:#FFCB6B;">node</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">server/server.js</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># (Recommended) Option 2. Run in background using PM2</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Install PM2 if you don&#39;t have it: </span></span>
<span class="line"><span style="color:#FFCB6B;">npm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">pm2</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-g</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">pm2</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">pm2-logrotate</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Start Server</span></span>
<span class="line"><span style="color:#FFCB6B;">pm2</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">server/server.js</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--name</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">uptime-kuma</span></span></code></pre></div><h4 id="监控类型" tabindex="-1">监控类型 <a class="header-anchor" href="#监控类型" aria-label="Permalink to &quot;监控类型&quot;">​</a></h4><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.2.30/202302111626265.png" alt="image-20230211162601186" style="zoom:67%;"><h4 id="监控mysql" tabindex="-1">监控MySQL <a class="header-anchor" href="#监控mysql" aria-label="Permalink to &quot;监控MySQL&quot;">​</a></h4><p>安装完成后即可浏览器打开 <strong>:3001</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.2.30/202302111618125.png" alt="image-20230211161804056" style="zoom:67%;"><blockquote><p>mysql://root:123456@192.168.0.198:3307/xuexi</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.2.30/202302111621597.png" alt="image-20230211162159474" style="zoom:67%;"><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.2.30/202302111624807.png" alt="image-20230211162427317"></p><h4 id="监控百度" tabindex="-1">监控百度 <a class="header-anchor" href="#监控百度" aria-label="Permalink to &quot;监控百度&quot;">​</a></h4><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.2.30/202302111627050.png" alt="image-20230211162744935"></p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.2.30/202302111628009.png" alt="image-20230211162815859"></p><h2 id="oshi-监控系统" tabindex="-1">OSHI 监控系统 <a class="header-anchor" href="#oshi-监控系统" aria-label="Permalink to &quot;OSHI 监控系统&quot;">​</a></h2><h3 id="项目简介" tabindex="-1">项目简介 <a class="header-anchor" href="#项目简介" aria-label="Permalink to &quot;项目简介&quot;">​</a></h3><p>OSHI 是一个基于 JNA（本地）的免费的操作系统和硬件信息库，专为 Java 设计。它可以跨平台的获取系统信息以及硬件信息，如操作系统版本、进程、内存和 CPU 使用情况、磁盘和分区、设备、传感器等。它不需要安装任何额外的本地库，因此接入起来很方便。</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">-- OSHI</span></span>
<span class="line"><span style="color:#A6ACCD;">https://github.com/oshi/oshi</span></span>
<span class="line"><span style="color:#A6ACCD;">-- Ward</span></span>
<span class="line"><span style="color:#A6ACCD;">https://github.com/Rudolf-Barbu/Ward</span></span></code></pre></div><h3 id="项目使用" tabindex="-1">项目使用 <a class="header-anchor" href="#项目使用" aria-label="Permalink to &quot;项目使用&quot;">​</a></h3><h4 id="maven-依赖" tabindex="-1">Maven 依赖 <a class="header-anchor" href="#maven-依赖" aria-label="Permalink to &quot;Maven 依赖&quot;">​</a></h4><p>我们通过配置 Maven 依赖来引入 OSHI，如下所示：</p><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">dependency</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">groupId</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">com.github.oshi</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">groupId</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">artifactId</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">oshi-core</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">artifactId</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">version</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">6.4.0</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">version</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">dependency</span><span style="color:#89DDFF;">&gt;</span></span></code></pre></div><p>这里注意的是，不同版本的 JDK 环境，需要引用不同版本的包：</p><ul><li>JDK8: oshi-core-6.4.0</li><li>JPMS: oshi-core-java11-6.4.0</li><li>JDK6: oshi-core-3.14.0</li></ul><h4 id="简单例子" tabindex="-1">简单例子 <a class="header-anchor" href="#简单例子" aria-label="Permalink to &quot;简单例子&quot;">​</a></h4><p>在这里写一个简单的例子，包括了一些常用硬件参数的获取，注释已经写的很详细了：</p><div class="language-java"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#C792EA;">public</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">static</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">void</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">main</span><span style="color:#89DDFF;">(</span><span style="color:#C792EA;">String</span><span style="color:#89DDFF;">[]</span><span style="color:#A6ACCD;"> args</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 系统信息类</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">SystemInfo</span><span style="color:#A6ACCD;"> systemInfo </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">new</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">SystemInfo</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 获取硬件信息</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">HardwareAbstractionLayer</span><span style="color:#A6ACCD;"> hardware </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> systemInfo</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getHardware</span><span style="color:#89DDFF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// CPU信息</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">CentralProcessor</span><span style="color:#A6ACCD;"> centralProcessor </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> hardware</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getProcessor</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 获取CPU名称</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">String</span><span style="color:#A6ACCD;"> name </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> centralProcessor</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getProcessorIdentifier</span><span style="color:#89DDFF;">().</span><span style="color:#82AAFF;">getName</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 获取CPU核心数</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">int</span><span style="color:#A6ACCD;"> physicalProcessorCount </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> centralProcessor</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getPhysicalProcessorCount</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 获取当前CPU每个核心的频率</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">long</span><span style="color:#89DDFF;">[]</span><span style="color:#A6ACCD;"> currentFreq </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> centralProcessor</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getCurrentFreq</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#A6ACCD;">    System</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">out</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">println</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">CPU名称：</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> name</span><span style="color:#89DDFF;">);</span></span>
<span class="line"><span style="color:#A6ACCD;">    System</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">out</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">println</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">CPU核心数：</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> physicalProcessorCount</span><span style="color:#89DDFF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 内存信息</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">GlobalMemory</span><span style="color:#A6ACCD;"> memory </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> hardware</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getMemory</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 内存总大小</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">long</span><span style="color:#A6ACCD;"> totalOfG </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> memory</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getTotal</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 可用大小</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">long</span><span style="color:#A6ACCD;"> availableOfG </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> memory</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getAvailable</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#A6ACCD;">    System</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">out</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">println</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">内存总大小：</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> totalOfG </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">G</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">);</span></span>
<span class="line"><span style="color:#A6ACCD;">    System</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">out</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">println</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">内存可用大小：</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> availableOfG </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">G</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 磁盘信息</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">List</span><span style="color:#89DDFF;">&lt;</span><span style="color:#C792EA;">HWDiskStore</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> diskStores </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> hardware</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getDiskStores</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 获取磁盘总大小</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">long</span><span style="color:#A6ACCD;"> total </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> diskStores</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">stream</span><span style="color:#89DDFF;">().</span><span style="color:#82AAFF;">mapToLong</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">HWDiskStore</span><span style="color:#89DDFF;font-style:italic;">::</span><span style="color:#A6ACCD;">getSize</span><span style="color:#89DDFF;">).</span><span style="color:#82AAFF;">sum</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#A6ACCD;">    System</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">out</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">println</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">磁盘总大小：</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> total </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1024</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">G</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">    </span><span style="color:#676E95;font-style:italic;">// 系统运行时间</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">long</span><span style="color:#A6ACCD;"> uptimeInSeconds </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> systemInfo</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">getOperatingSystem</span><span style="color:#89DDFF;">().</span><span style="color:#82AAFF;">getSystemUptime</span><span style="color:#89DDFF;">();</span></span>
<span class="line"><span style="color:#A6ACCD;">    System</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">out</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">println</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">系统运行时间：</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> uptimeInSeconds </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3600</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">小时</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">);</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span></code></pre></div><p>在本地运行之后输出如下：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202303201614507.png" alt="image-20230320161424427" style="zoom:80%;"><h3 id="漂亮的仪表盘" tabindex="-1">漂亮的仪表盘 <a class="header-anchor" href="#漂亮的仪表盘" aria-label="Permalink to &quot;漂亮的仪表盘&quot;">​</a></h3><p>看过上面的例子，你会发现 OSHI 其实很好用吧。但是只有一个例子的展示大家应该不太满足，所以我特意找了一个已经开发好的监控工具——Ward。Ward 是一款简单、极简主义的服务器监控工具。它用漂亮的仪表盘的形式来展示系统的硬件信息。如图所示：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202303201614682.png" alt="image-20230320161443559" style="zoom:80%;"><p>其实 Ward 是一个很简单的 springboot 项目，借助于该项目，简单阅读下源码就能更好的理解 OSHI 的使用啦。</p><h2 id="分布式之系统监控" tabindex="-1">分布式之系统监控 <a class="header-anchor" href="#分布式之系统监控" aria-label="Permalink to &quot;分布式之系统监控&quot;">​</a></h2><p>Frostmourne 项目地址：<a href="https://github.com/AutohomeCorp/frostmourne" target="_blank" rel="noreferrer">https://github.com/AutohomeCorp/frostmourne</a></p><h3 id="项目特点" tabindex="-1">项目特点 <a class="header-anchor" href="#项目特点" aria-label="Permalink to &quot;项目特点&quot;">​</a></h3><ul><li>支持多种数据源：ES、Prometheus、InfluxDB、MySQL等</li><li>支持多种报警消息发送：钉钉、企业微信、飞书、短信</li><li>自定义消息模板，消息模板有md和text两种类型</li><li>支持分布式调度</li><li>内置权限管理，数据权限隔离</li></ul><h3 id="项目介绍" tabindex="-1">项目介绍 <a class="header-anchor" href="#项目介绍" aria-label="Permalink to &quot;项目介绍&quot;">​</a></h3><p>Frostmourne 监听日志数据，当触发报警规则，通过钉钉、企业微信、短信等方式通知开发人员，从而避免生产事故。</p><p><img src="https://mmbiz.qpic.cn/mmbiz/4XgGs2SeJoF0KzVLicgTOvJfpYsRbs91icBiaSDaHibOl6DRQhGt4OR6MPDE8XulWf0wCJTwntepIetQhd3n3x4icCA/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="快速使用" tabindex="-1">快速使用 <a class="header-anchor" href="#快速使用" aria-label="Permalink to &quot;快速使用&quot;">​</a></h3><p>将 frostmourne.sql 文件导入到数据库中，直接在GitHub中下载安装包，修改application.properties中的数据源。</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 启动命令</span></span>
<span class="line"><span style="color:#FFCB6B;">./scripts/startup.sh</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 停止命令</span></span>
<span class="line"><span style="color:#FFCB6B;">./scripts/shutdown.sh</span></span></code></pre></div><p>默认端口是10054。在浏览器访问：:10054/</p><p><img src="https://mmbiz.qpic.cn/mmbiz/4XgGs2SeJoF0KzVLicgTOvJfpYsRbs91icURLMT6h6SRCAdKc2ficlaHmqmAzfshl0YichOZYUK3glOgx5NOAAds2Q/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>目前大多数项目中使用 ELK方式采集日志比较多，所以这里以配置ES数据源举例子：</p><p>1、添加<code>Elasticsearch</code>数据源</p><p>2、配置监控基础信息</p><p>3、编写查询语句</p><p>4、配置报警规则</p><p>5、配置消息模板</p><p>6、配置报警消息发送规则</p><p><img src="https://mmbiz.qpic.cn/mmbiz/4XgGs2SeJoF0KzVLicgTOvJfpYsRbs91icFE3EibnsyJQKozcujHRW48GeGGYRyTNP3w5T0T2Ldw8VHGssUxniaadA/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>钉钉报警截图：</p><p><img src="https://mmbiz.qpic.cn/mmbiz/4XgGs2SeJoF0KzVLicgTOvJfpYsRbs91ic6fhaHaE7fSM3m5q3cJqxDb6RlSusicnYHsYyOYC0x2rnbZickgffTpqg/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h1 id="监控系统选型" tabindex="-1">监控系统选型 <a class="header-anchor" href="#监控系统选型" aria-label="Permalink to &quot;监控系统选型&quot;">​</a></h1><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191643424.png" alt="image-20220719164359271" style="zoom:67%;"><p>之前，我写过几篇有关「线上问题排查」的文章，文中附带了一些监控图，有些读者对此很感兴趣，问我监控系统选型上有没有好的建议？</p><p>目前我所经历的几家公司，监控系统都是自研的。其实业界有很多优秀的开源产品可供选择，能满足绝大部分的监控需求，如果能从中选择一款满足企业当下的诉求，显然最省时省力。</p><p>这篇文章，我将对监控体系的基础知识、原理和架构做一次系统性整理，同时还会对几款最常用的开源监控产品做下介绍，以便大家选型时参考。内容包括3部分：</p><ul><li>必知必会的监控基础知识</li><li>主流监控系统介绍</li><li>监控系统的选型建议</li></ul><h2 id="为什么需要数据驱动运维" tabindex="-1">为什么需要数据驱动运维 <a class="header-anchor" href="#为什么需要数据驱动运维" aria-label="Permalink to &quot;为什么需要数据驱动运维&quot;">​</a></h2><p>首先，那下面的几个常见运维场景，运维人一定不意外：</p><h3 id="缺少跨系统监控的统一视图" tabindex="-1">缺少跨系统监控的统一视图 <a class="header-anchor" href="#缺少跨系统监控的统一视图" aria-label="Permalink to &quot;缺少跨系统监控的统一视图&quot;">​</a></h3><p>企业历史积淀的监控系统较多，既有如云资源监控、网络资源监控、存储资源监控等通用基础监控，也有如业务监控、数据库监控、各种中间件监控等定向监控。这些监控背后数据种类多、格式不统一，且分散在各自系统中。各系统拥有独立的权限管理方式以及数据展现方式，导致在故障发生时，缺少统一的视图汇总各类数据，无法有效辅助运维人员进行故障分析。运维人员无法直观地判断异常指标间的关联关系，需要各个系统不断跳转并反复查看，手工进行数据整合和分析判断。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.8.30/202209091304642.png" alt="image-20220909130445568" style="zoom:80%;"><h3 id="缺少业务视角的指标关联" tabindex="-1">缺少业务视角的指标关联 <a class="header-anchor" href="#缺少业务视角的指标关联" aria-label="Permalink to &quot;缺少业务视角的指标关联&quot;">​</a></h3><p>在故障发生时，往往最先反应在业务指标上，然而业务指标通常缺少与其他各种类型运维监控数据、告警数据关联关系，导致运维人员在故障处理的过程中效率较低。监控工具缺少与业务数据、告警数据和系统关系数据的有效整合，使得故障定位的过程需要多个系统运维人员共同参与分析，很难直接从业务角度来发现监控数据之间的关系。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.8.30/202209091305939.png" alt="image-20220909130505884" style="zoom:80%;"><h3 id="缺少纵深交互的分析能力" tabindex="-1">缺少纵深交互的分析能力 <a class="header-anchor" href="#缺少纵深交互的分析能力" aria-label="Permalink to &quot;缺少纵深交互的分析能力&quot;">​</a></h3><p>系统故障无法完全避免，故障管理的重点是对故障快速响应和恢复服务。通常运维人员在故障定位时，很大程度上依赖运维经验，而监控工具更多是提供单一层面、单一指标的排查方式，无法有效结合应用架构及相关指标进行关联分析。导致在故障定位时存在根因定位不准确、定位不够及时等情况。随着系统复杂度不断增加，系统可用性要求不断提升，监控工具不再单纯是统一的整合和展示，还需要更有效的分析手段，通过关联、下钻等交互方式辅助查找故障根源。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.8.30/202209091305500.png" alt="image-20220909130524428" style="zoom:80%;"><h3 id="缺少针对场景的定制能力" tabindex="-1">缺少针对场景的定制能力 <a class="header-anchor" href="#缺少针对场景的定制能力" aria-label="Permalink to &quot;缺少针对场景的定制能力&quot;">​</a></h3><p>特定行业的业务场景相对较为固定，监控工具缺少针对具体运维场景进行数据整合和展示，以及定制数据关联和分析的功能，使得运维人员在特定场景下的故障处理效率较低。</p><h2 id="我们需要哪些数据" tabindex="-1">我们需要哪些数据 <a class="header-anchor" href="#我们需要哪些数据" aria-label="Permalink to &quot;我们需要哪些数据&quot;">​</a></h2><p>想要解决以上场景，我们就需要大量的数据去进行分析，从而实现数据驱动运维。但数据驱动运维是一个不断演进的动态过程，我们很难在运维数据可视化分析体系的搭建初期就清晰的规划，我们需要哪些数据，又要摒弃哪些数据。因此，我们采集尽可能多的数据，再进行分门别类的整合。在这一过程中，我们尝试进行以下分类：</p><h3 id="面向业务" tabindex="-1">面向业务 <a class="header-anchor" href="#面向业务" aria-label="Permalink to &quot;面向业务&quot;">​</a></h3><p>对于运维来说，端是非常重要的数据采集点。端采集的数据可以更直接反映用户对产品的感知。这其中涵盖面向运营的产品业务数据，也包括面向运维的产品技术指标。通过相互关联，可以让运维人在某些场景下，快速找到事件相关性。比如说当前资源容量规划与业务增长之间的关系，订单支付成功率与服务调用的关系等等。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/qdzZBE73hWtgNhRxBcSgdHUbibZzaicZx9NMhW1jdkK0ep3mU6XysP308TIFIJjCqr8oUxgvIsU0MaB9MlQicsaSA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="面向服务-接口" tabindex="-1">面向服务 &amp; 接口 <a class="header-anchor" href="#面向服务-接口" aria-label="Permalink to &quot;面向服务 &amp; 接口&quot;">​</a></h3><p>作为面向应用的能力封装，各类服务的特征和采集都与传统资源采集方法截然不同。不同的服务需要关注的指标都非常不同。用户在客户端发生请求之后，会产生大量的调用。虽然接口调用数据存在数据量大、不同语言不同采集方式等问题，但在故障发现和运维优化等方面，接口调用数据最有说服力，直观展现相关服务健康度。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/qdzZBE73hWtgNhRxBcSgdHUbibZzaicZx9dibOtkh3y0v0bOl8BrnUt3iaE1g3VM3ticEIZPryiaXe49xl3WTv2jq2Bw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="面向资源" tabindex="-1">面向资源 <a class="header-anchor" href="#面向资源" aria-label="Permalink to &quot;面向资源&quot;">​</a></h3><p>产品在向用户提供相关服务的背后，CPU、内存、磁盘 IO 等资源决定着服务的支撑力度。虽然云原生帮助企业实现更加迅捷地扩缩容。但运维扔需要建立相应容量模型来计算资源使用率，以应对业务突发情况。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/qdzZBE73hWtgNhRxBcSgdHUbibZzaicZx9luQ7qd7jMiayI9tvFyzpDe00hUMHTxeQvUxk8SSjBCd64yOibUpCiadsQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="必知必会的监控知识⭐⭐" tabindex="-1">必知必会的监控知识⭐⭐ <a class="header-anchor" href="#必知必会的监控知识⭐⭐" aria-label="Permalink to &quot;必知必会的监控知识⭐⭐&quot;">​</a></h2><p>我们可以理解监控系统就像我们古代打战的哨兵一样，哨兵的角色非常重要，敌人来了，哨兵会第一时间发出预警(吹笛、打鼓、放烟)，让守城的战士能够最快的时间处理，应对。</p><p>那对于我们应用系统而言，监控系统就像我们第三只眼，如果有应用系统出现问题，我们可以通过监控系统看是哪里出现问题，是redis挂了，还是说服务器内存满了，有监控系统我们可以很轻松、快速的定位问题。</p><p>甚至我们可以设置预警，对一些将要出现的问题进行提前预防处理，及时避免问题的发生。</p><h3 id="_1-监控系统的7大作用" tabindex="-1">1. 监控系统的7大作用 <a class="header-anchor" href="#_1-监控系统的7大作用" aria-label="Permalink to &quot;1. 监控系统的7大作用&quot;">​</a></h3><p>正所谓「无监控，不运维」，监控系统的地位不言而喻。不管你是监控系统的开发者还是使用者，首先肯定要清楚：监控系统的目标是什么？它能发挥什么作用？</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191644295.png" alt="image-20220719164425223" style="zoom:50%;"><ul><li><strong>实时采集监控数据</strong>：包括硬件、操作系统、中间件、应用程序等各个维度的数据。</li><li><strong>实时反馈监控状态</strong>：通过对采集的数据进行多维度统计和可视化展示，实时体现监控对象的状态是正常还是异常</li><li>**预知故障和告警：**能够提前预知故障风险，并及时发出告警信息。</li><li>**辅助定位故障：**提供故障发生时的各项指标数据，辅助故障分析和定位。</li><li>**辅助性能调优：**为性能调优提供数据支持，比如慢SQL，接口响应时间等。</li><li>**辅助容量规划：**为服务器、中间件以及应用集群的容量规划提供数据支撑。</li><li>**辅助自动化运维：**为自动扩容或者根据配置的SLA进行服务降级等智能运维提供数据支撑。</li></ul><h3 id="_2-使用监控系统的正确姿势" tabindex="-1">2. 使用监控系统的正确姿势 <a class="header-anchor" href="#_2-使用监控系统的正确姿势" aria-label="Permalink to &quot;2. 使用监控系统的正确姿势&quot;">​</a></h3><blockquote><p>出任何线上事故，先不说其他地方有问题，监控部分一定是有问题的。</p></blockquote><p>听着很甩锅的一句话，仔细思考好像有一定道理。我们在事故复盘时，通常会思考这3个和监控有关的问题：有没有做监控？监控是否及时？监控信息是否有助于快速定位问题？</p><p>可见光有一套好的监控系统还不够，还必须知道**「<strong><strong>如何</strong></strong>用好它」**。一个成熟的研发团队通常会定一个监控规范，用来统一监控系统的使用方法。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191645922.png" alt="image-20220719164526873" style="zoom:67%;"><ul><li>**了解监控对象的工作原理：**要做到对监控对象有基本的了解，清楚它的工作原理。比如想对JVM进行监控，你必须清楚JVM的堆内存结构和垃圾回收机制。</li><li>**确定监控对象的指标：**清楚使用哪些指标来刻画监控对象的状态？比如想对某个接口进行监控，可以采用请求量、耗时、超时量、异常量等指标来衡量。</li><li>**定义合理的报警阈值和等级：**达到什么阈值需要告警？对应的故障等级是多少？不需要处理的告警不是好告警，可见定义合理的阈值有多重要，否则只会降低运维效率或者让监控系统失去它的作用。</li><li>**建立完善的故障处理流程：**收到故障告警后，一定要有相应的处理流程和oncall机制，让故障及时被跟进处理。</li></ul><h3 id="_3-监控的对象和指标都有哪些⭐" tabindex="-1">3. 监控的对象和指标都有哪些⭐ <a class="header-anchor" href="#_3-监控的对象和指标都有哪些⭐" aria-label="Permalink to &quot;3. 监控的对象和指标都有哪些⭐&quot;">​</a></h3><p>监控已然成为了整个产品生命周期非常重要的一环，运维关注硬件和基础监控，研发关注各类中间件和应用层的监控，产品关注核心业务指标的监控。可见，监控的对象已经越来越立体化。</p><p>这里，我对常用的监控对象以及监控指标做了分类整理，供大家参考。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202210241633453.png" alt="image-20221024162810360" style="zoom:67%;"><h4 id="_1-硬件监控" tabindex="-1">1 硬件监控 <a class="header-anchor" href="#_1-硬件监控" aria-label="Permalink to &quot;1 硬件监控&quot;">​</a></h4><p>包括：电源状态、CPU状态、机器温度、风扇状态、物理磁盘、raid状态、内存状态、网卡状态</p><h4 id="_2-服务器基础监控" tabindex="-1">2 服务器基础监控 <a class="header-anchor" href="#_2-服务器基础监控" aria-label="Permalink to &quot;2 服务器基础监控&quot;">​</a></h4><ul><li>CPU：单个CPU以及整体的使用情况</li><li>内存：已用内存、可用内存</li><li>磁盘：磁盘使用率、磁盘读写的吞吐量</li><li>网络：出口流量、入口流量、TCP连接状态</li></ul><h4 id="_3-数据库监控" tabindex="-1">3 数据库监控 <a class="header-anchor" href="#_3-数据库监控" aria-label="Permalink to &quot;3 数据库监控&quot;">​</a></h4><p>包括：数据库连接数、QPS、TPS、并行处理的会话数、缓存命中率、主从延时、锁状态、慢查询</p><h4 id="_4-中间件监控" tabindex="-1">4 中间件监控 <a class="header-anchor" href="#_4-中间件监控" aria-label="Permalink to &quot;4 中间件监控&quot;">​</a></h4><ul><li>Nginx：活跃连接数、等待连接数、丢弃连接数、请求量、耗时、5XX错误率</li><li>Tomcat：最大线程数、当前线程数、请求量、耗时、错误量、堆内存使用情况、GC次数和耗时</li><li>缓存 ：成功连接数、阻塞连接数、已使用内存、内存碎片率、请求量、耗时、缓存命中率</li><li>消息队列：连接数、队列数、生产速率、消费速率、消息堆积量</li></ul><h4 id="_5-应用监控" tabindex="-1">5 应用监控 <a class="header-anchor" href="#_5-应用监控" aria-label="Permalink to &quot;5 应用监控&quot;">​</a></h4><ul><li>HTTP接口：URL存活、请求量、耗时、异常量</li><li>RPC接口：请求量、耗时、超时量、拒绝量</li><li>JVM ：GC次数、GC耗时、各个内存区域的大小、当前线程数、死锁线程数</li><li>线程池：活跃线程数、任务队列大小、任务执行耗时、拒绝任务数</li><li>连接池：总连接数、活跃连接数</li><li>日志监控：访问日志、错误日志</li><li>业务指标：视业务来定，比如PV、订单量等</li></ul><h3 id="_4-监控系统的基本流程" tabindex="-1">4. 监控系统的基本流程 <a class="header-anchor" href="#_4-监控系统的基本流程" aria-label="Permalink to &quot;4. 监控系统的基本流程&quot;">​</a></h3><p>无论是开源的监控系统还是自研的监控系统，监控的整个流程大同小异，一般都包括以下模块：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202210241636370.png" alt="image-20221024163557109" style="zoom:67%;"><ul><li>**数据采集：**采集的方式有很多种，包括日志埋点进行采集（通过Logstash、Filebeat等进行上报和解析），JMX标准接口输出监控指标，被监控对象提供REST API进行数据采集（如Hadoop、ES），系统命令行，统一的SDK进行侵入式的埋点和上报等。</li><li>**数据传输：**将采集的数据以TCP、UDP或者HTTP协议的形式上报给监控系统，有主动Push模式，也有被动Pull模式。</li><li>**数据存储：**有使用MySQL、Oracle等RDBMS存储的，也有使用时序数据库RRDTool、OpentTSDB、InfluxDB存储的，还有使用HBase存储的。</li><li>**数据展示：**数据指标的图形化展示。</li><li>**监控告警：**灵活的告警设置，以及支持邮件、短信、IM等多种通知通道。</li></ul><h2 id="主流监控系统介绍" tabindex="-1">主流监控系统介绍 <a class="header-anchor" href="#主流监控系统介绍" aria-label="Permalink to &quot;主流监控系统介绍&quot;">​</a></h2><p>下面再来认识下主流的开源监控系统，由于篇幅有限，我挑选了3款使用最广泛的监控系统：Zabbix、Open-Falcon、Prometheus，会对它们的架构进行介绍，同时总结下各自的优劣势。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191648395.png" alt="image-20220719164800340" style="zoom:50%;"><h3 id="_1-zabbix-老牌监控的优秀代表" tabindex="-1">1. Zabbix（老牌监控的优秀代表） <a class="header-anchor" href="#_1-zabbix-老牌监控的优秀代表" aria-label="Permalink to &quot;1. Zabbix（老牌监控的优秀代表）&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191648771.png" alt="image-20220719164843698" style="zoom:67%;"><p>Zabbix 1998年诞生，核心组件采用C语言开发，Web端采用PHP开发。它属于老牌监控系统中的优秀代表，监控功能很全面，使用也很广泛，差不多有70%左右的互联网公司都曾使用过 Zabbix 作为监控解决方案。</p><p>先来了解下Zabbix的架构设计：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191649097.png" alt="image-20220719164903037" style="zoom:50%;"><p>Zabbix架构图</p><ul><li>**Zabbix Server：**核心组件，C语言编写，负责接收Agent、Proxy发送的监控数据，也支持JMX、SNMP等多种协议直接采集数据。同时，它还负责数据的汇总存储以及告警触发等。</li><li>**Zabbix Proxy：**可选组件，对于被监控机器较多的情况下，可使用Proxy进行分布式监控，它能代理Server收集部分监控数据，以减轻Server的压力。</li><li>**Zabbix Agentd：**部署在被监控主机上，用于采集本机的数据并发送给Proxy或者Server，它的插件机制支持用户自定义数据采集脚本。Agent可在Server端手动配置，也可以通过自动发现机制被识别。数据收集方式同时支持主动Push和被动Pull 两种模式。</li><li>**Database：**用于存储配置信息以及采集到的数据，支持MySQL、Oracle等关系型数据库。同时，最新版本的Zabbix已经开始支持时序数据库，不过成熟度还不高。</li><li>**Web Server：**Zabbix的GUI组件，PHP编写，提供监控数据的展现和告警配置。</li></ul><p>下面是 Zabbix 的优势：</p><ul><li>**产品成熟：**由于诞生时间长且使用广泛，拥有丰富的文档资料以及各种开源的数据采集插件，能覆盖绝大部分监控场景。</li><li>**采集方式丰富：**支持Agent、SNMP、JMX、SSH等多种采集方式，以及主动和被动的数据传输方式。</li><li><strong>较强的扩展性</strong>：支持Proxy分布式监控，有agent自动发现功能，插件式架构支持用户自定义数据采集脚本。</li><li><strong>配置管理方便</strong>：能通过Web界面进行监控和告警配置，操作方便，上手简单。</li></ul><p>下面是 Zabbix 的劣势：</p><ul><li>**性能瓶颈：**机器量或者业务量大了后，关系型数据库的写入一定是瓶颈，官方给出的单机上限是5000台，个人感觉达不到，尤其现在应用层的指标越来越多。虽然最新版已经开始支持时序数据库，不过成熟度还不高。</li><li>**应用层监控支持有限：**如果想对应用程序做侵入式的埋点和采集（比如监控线程池或者接口性能），zabbix没有提供对应的sdk，通过插件式的脚本也能曲线实现此功能，个人感觉zabbix就不是做这个事的。</li><li><strong>数据模型不强大</strong>：不支持tag，因此没法按多维度进行聚合统计和告警配置，使用起来不灵活。</li><li><strong>方便二次开发难度大</strong>：Zabbix采用的是C语言，二次开发往往需要熟悉它的数据表结构，基于它提供的API更多只能做展示层的定制。</li></ul><h3 id="_2-open-falcon-小米出品-国内流行" tabindex="-1">2. Open-Falcon 小米出品，国内流行 <a class="header-anchor" href="#_2-open-falcon-小米出品-国内流行" aria-label="Permalink to &quot;2. Open-Falcon 小米出品，国内流行&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191650259.png" alt="image-20220719165014191" style="zoom:80%;"><p>Open-falcon 是小米2015年开源的企业级监控工具，采用Go和Python语言开发，这是一款灵活、高性能且易扩展的新一代监控方案，目前小米、美团、滴滴等超过200家公司在使用它。</p><p>小米初期也使用的Zabbix进行监控，但是机器量和业务量上来后，Zabbix就有些力不从心了。因此，后来自主研发了Open-Falcon，在架构设计上吸取了Zabbix的经验，同时很好地解决了Zabbix的诸多痛点。</p><p>先来了解下Open-Falcon的架构设计：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191650388.png" alt="image-20220719165047290" style="zoom:67%;"><p>Open-Falcon架构图，来自网络</p><ul><li>**Falcon-agent：**数据采集器和收集器，Go开发，部署在被监控的机器上，支持3种数据采集方式。首先它能自动采集单机200多个基础监控指标，无需做任何配置；同时支持用户自定义的plugin获取监控数据；此外，用户可通过http接口，自主push数据到本机的proxy-gateway，由gateway转发到server.</li><li>**Transfer：**数据分发组件，接收客户端发送的数据，分别发送给数据存储组件Graph和告警判定组件Judge，Graph和Judge均采用一致性hash做数据分片，以提高横向扩展能力。同时Transfer还支持将数据分发到OpenTSDB，用于历史归档。</li><li>**Graph：**数据存储组件，底层使用RRDTool（时序数据库）做单个指标的存储，并通过缓存、分批写入磁盘等方式进行了优化。据说一个graph实例能够处理8W+每秒的写入速率。</li><li>**Judge和Alarm：**告警组件，Judge对Transfer组件上报的数据进行实时计算，判断是否要产生告警事件，Alarm组件对告警事件进行收敛处理后，将告警消息推送给各个消息通道。</li><li>**API：**面向终端用户，收到查询请求后会去Graph中查询指标数据，汇总结果后统一返回给用户，屏蔽了存储集群的分片细节。</li></ul><p>下面是Open-Falcon的优势：</p><ul><li>**自动采集能力：**Falcon-agent 能自动采集服务器的200多个基础指标（比如CPU、内存等），无需在server上做任何配置，这一点可以秒杀Zabbix.</li><li><strong>强大的存储能力</strong>：底层采用RRDTool，并且通过一致性hash进行数据分片，构建了一个分布式的时序数据存储系统，可扩展性强。</li><li>**灵活的数据模型：**借鉴OpenTSDB，数据模型中引入了tag，这样能支持多维度的聚合统计以及告警规则设置，大大提高了使用效率。</li><li>**插件统一管理：**Open-Falcon的插件机制实现了对用户自定义脚本的统一化管理，可通过HeartBeat Server分发给agent，减轻了使用者自主维护脚本的成本。</li><li><strong>个性化监控支持</strong>：基于Proxy-gateway，很容易通过自主埋点实现应用层的监控（比如监控接口的访问量和耗时）和其他个性化监控需求，集成方便。</li></ul><p>下面是Open-Falcon的劣势：</p><ul><li>**整体发展一般：**社区活跃度不算高，同时版本更新慢，有些大厂是基于它的稳定版本直接做二次开发的，关于以后的前景其实有点担忧。</li><li><strong>UI不够友好</strong>：对于业务线的研发来说，可能只想便捷地完成告警配置和业务监控，但是它把机器分组、策略模板、模板继承等概念全部暴露在UI上，感觉在围绕这几个概念设计UI，理解有点费劲。</li><li>**安装比较复杂：**个人的亲身感受，由于它是从小米内部衍生出来的，虽然去掉了对小米内部系统的依赖，但是组件还是比较多，如果对整个架构不熟悉，安装很难一蹴而就。</li></ul><h3 id="_3-prometheus-号称下一代监控系统" tabindex="-1">3. Prometheus（号称下一代监控系统） <a class="header-anchor" href="#_3-prometheus-号称下一代监控系统" aria-label="Permalink to &quot;3. Prometheus（号称下一代监控系统）&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191653000.png" alt="image-20220719165332939" style="zoom:80%;"><p>Prometheus（普罗米修斯）是由前google员工2015年正式发布的开源监控系统，采用Go语言开发。它不仅有一个很酷的名字，同时它有Google与k8s的强力支持，开源社区异常火爆。</p><p>Prometheus 2016年加入云原生基金会，是继k8s后托管的第二个项目，未来前景被相当看好。它和Open-Falcon最大不同在于：数据采集是基于Pull模式的，而不是Push模式，并且架构非常简单。</p><p>先来了解下Prometheus的架构设计：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.6.30/202207191653045.png" alt="image-20220719165356976" style="zoom:67%;"><p>Prometheus架构图，来自网络</p><ul><li>**Prometheus Server：**核心组件，用于收集、存储监控数据。它同时支持静态配置和通过Service Discovery动态发现来管理监控目标，并从监控目标中获取数据。此外，Prometheus Server 也是一个时序数据库，它将监控数据保存在本地磁盘中，并对外提供自定义的 PromQL 语言实现对数据的查询和分析。</li><li>**Exporter：**用来采集数据，作用类似于agent，区别在于Prometheus是基于Pull方式拉取采集数据的，因此，Exporter通过HTTP服务的形式将监控数据按照标准格式暴露给Prometheus Server，社区中已经有大量现成的Exporter可以直接使用，用户也可以使用各种语言的client library自定义实现。</li><li>**Push gateway：**主要用于瞬时任务的场景，防止Prometheus Server来pull数据之前此类Short-lived jobs就已经执行完毕了，因此job可以采用push的方式将监控数据主动汇报给Push gateway缓存起来进行中转。</li><li>**Alert Manager：**当告警产生时，Prometheus Server将告警信息推送给Alert Manager，由它发送告警信息给接收方。</li><li>**Web UI：**Prometheus内置了一个简单的web控制台，可以查询配置信息和指标等，而实际应用中我们通常会将Prometheus作为Grafana的数据源，创建仪表盘以及查看指标。</li></ul><p>下面是Prometheus的优势：</p><ul><li>**轻量管理：**架构简单，不依赖外部存储，单个服务器节点可直接工作，二进制文件启动即可，属于轻量级的Server，便于迁移和维护。</li><li><strong>较强的处理能力</strong>：监控数据直接存储在Prometheus Server本地的时序数据库中，单个实例可以处理数百万的metrics。</li><li>**灵活的数据模型：**同Open-Falcon，引入了tag，属于多维数据模型，聚合统计更方便。</li><li>**强大的查询语句：**PromQL允许在同一个查询语句中，对多个metrics进行加法、连接和取分位值等操作。</li><li><strong>很好地支持云环境</strong>：能自动发现容器，同时k8s和etcd等项目都提供了对Prometheus的原生支持，是目前容器监控最流行的方案。</li></ul><p>下面是Prometheus的劣势：</p><ul><li>**功能不够完善：**Prometheus从一开始的架构设计就是要做到简单，不提供集群化方案，长期的持久化存储和用户管理，而这些是企业变大后所必须的特性，目前要做到这些只能在Prometheus之上进行扩展。</li><li><strong>网络规划变复杂</strong>：由于Prometheus采用的是Pull模型拉取数据，意味着所有被监控的endpoint必须是可达的，需要合理规划网络的安全配置。</li></ul><h2 id="监控系统的选型建议" tabindex="-1">监控系统的选型建议 <a class="header-anchor" href="#监控系统的选型建议" aria-label="Permalink to &quot;监控系统的选型建议&quot;">​</a></h2><p>通过上面的介绍，大家对主流的监控系统应该有了一定的认识。面对选型问题，我的建议是：</p><p>1、先明确清楚你的监控需求：要监控的对象有哪些？机器数量和监控指标有多少？需要具备什么样的告警功能？</p><p>2、监控是一项长期建设的事情，一开始就想做一个 All In One 的监控解决方案，我觉得没有必要。从成本角度考虑，在初期直接使用开源的监控方案即可，先解决有无问题。</p><p>3、从系统成熟度上看，Zabbix属于老牌的监控系统，资料多，功能全面且稳定，如果机器数量在几百台以内，不用太担心性能问题，另外，采用数据库分区、SSD硬盘、Proxy架构、Push采集模式都可以提高监控性能。</p><p>4、Zabbix在服务器监控方面占绝对优势，可以满足90%以上的监控场景，但是应用层的监控似乎并不擅长，比如要监控线程池的状态、某个内部接口的执行时间等，这种通常都要做侵入式埋点。相反，新一代的监控系统Open-Falcon和Prometheus在这一点做得很好。</p><p>5、从整体表现上来看，新一代监控系统也有明显的优势，比如：灵活的数据模型、更成熟的时序数据库、强大的告警功能，如果之前对zabbix这种传统监控没有技术积累，建议使用Open-Falcon或者Prometheus.</p><p>6、Open-Falcon的核心优势在于数据分片功能，能支撑更多的机器和监控项；Prometheus则是容器监控方面的标配，有Google和k8s加持。</p><p>7、Zabbix、Open-Falcon和Prometheus都支持和Grafana做快速集成，想要美观且强大的可视化体验，可以和Grafana进行组合。</p><p>8、用合适的监控系统解决相应的问题即可，可以多套监控同时使用，这种在企业初期很常见。</p><p>9、到中后期，随着机器数据增加和个性化需求增多（比如希望统一监控平台、打通公司的CMDB和组织架构关系），往往需要二次开发或者通过监控系统提供的API做集成，从这点来看，Open-Falcon或者Prometheus更合适。</p><p>10、如果非要自研，可以多研究下主流监控系统的架构方案，借鉴它们的优势。</p></div></div></main><footer class="VPDocFooter" data-v-6b87e69f data-v-37656e44><!--[--><!--]--><!----><nav class="prev-next" data-v-37656e44><div class="pager" data-v-37656e44><a class="pager-link prev" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E5%8F%AF%E8%A7%86%E5%8C%96%E5%A4%A7%E5%B1%8F.html" data-v-37656e44><span class="desc" data-v-37656e44>Previous page</span><span class="title" data-v-37656e44>可视化大屏</span></a></div><div class="pager" data-v-37656e44><a class="pager-link next" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/HTML%E5%9F%BA%E7%A1%80.html" data-v-37656e44><span class="desc" data-v-37656e44>Next page</span><span class="title" data-v-37656e44>HTML基础</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"2、数据库_mysql_mysql面试_基础.md\":\"40da680a\",\"1、学前端_5、小程序_小程序项目.md\":\"60a1629b\",\"1、学前端_4、node_知识篇.md\":\"a7fb500e\",\"1、学前端_2、js_ts_es6 进阶.md\":\"6d07ba10\",\"1、学前端_3、vue_vue3_vue3进阶.md\":\"7ac622b4\",\"5、运维_jenkins.md\":\"929081f8\",\"1、学前端_2、js_ts_typescript.md\":\"875a4aa4\",\"2、数据库_mysql_mysql核心_设计.md\":\"7faf46d1\",\"2、数据库_mysql_mysql核心_基础.md\":\"d8e97f3e\",\"1、学前端_1、html_css_html基础.md\":\"7584d076\",\"1、学前端_5、专题篇_问题篇.md\":\"e893aaa2\",\"2、数据库_mysql_mysql面试_进阶.md\":\"f934806d\",\"3、springboot_运维_原理.md\":\"f4a39db6\",\"2、数据库_influxdb.md\":\"6e1711e1\",\"3、springboot_新特性.md\":\"cdf3e307\",\"mybatis_mybatisplus_jpa.md\":\"8e41681b\",\"1、学前端_5、小程序_小程序优化.md\":\"a2185198\",\"2、数据库_redis_redis基础.md\":\"856df0e0\",\"linux_实用脚本.md\":\"f2299dd5\",\"4、微服务_必备_分布式基础.md\":\"d49863d5\",\"2、数据库_redis_redis优化.md\":\"e66ae32f\",\"4、微服务_springsecurity_进阶篇.md\":\"235a8e9e\",\"5、运维_chatgpt.md\":\"10db3823\",\"2、数据库_mysql_分库分表.md\":\"e1c8a095\",\"start.md\":\"9bc1ff8d\",\"5、运维_github.md\":\"2ec6c735\",\"java学前端_css.md\":\"f11b47f0\",\"1、学前端_5、专题篇_知识篇.md\":\"a463ed8d\",\"linux_软件部署.md\":\"d6722925\",\"2、数据库_neo4j.md\":\"97ad22ac\",\"team.md\":\"ce467a6a\",\"nginx_实战篇.md\":\"7785486e\",\"index.md\":\"8c3ec167\",\"计算机基础_计算机网络_网络基础.md\":\"7a54a85d\",\"1、学前端_4、node_进阶篇.md\":\"60f6db69\",\"java_java集合.md\":\"a049b313\",\"1、学前端_3、vue_vue3_vue3高级.md\":\"614d1516\",\"1、学前端_5、小程序_微信小程序.md\":\"9a4be771\",\"5、运维_netty.md\":\"12ca0278\",\"2、数据库_mysql_mysql核心_运维.md\":\"83f97c16\",\"idea_vs code.md\":\"afdcb593\",\"java学前端_vue3_组件.md\":\"1086884e\",\"idea_chrome.md\":\"4a32afbc\",\"云原生_k8s.md\":\"db58e65a\",\"2、数据库_mysql_mysql核心_进阶.md\":\"61d16dff\",\"ssm_springbatch.md\":\"f799ab4a\",\"三高_分布式.md\":\"db1b8a1b\",\"2、数据库_elasticsearch_1、es基础.md\":\"04d17448\",\"linux_linux基础.md\":\"4b0bf394\",\"idea_idea插件.md\":\"fa86e45a\",\"可视化 _ 监控_可视化大屏.md\":\"004553bd\",\"2、数据库_mongodb_整合.md\":\"3c47d7f4\",\"4、微服务_springsecurity_基础篇.md\":\"534a3401\",\"4、微服务_进阶.md\":\"69095c58\",\"计算机基础_计算机基础_操作系统.md\":\"0f75d113\",\"可视化 _ 监控_zabbix.md\":\"71f2270e\",\"nginx_基础篇.md\":\"c7d8bb50\",\"1、学前端_4、node_项目实战.md\":\"bc5065b8\",\"2、数据库_redis_redis原理.md\":\"5cedf685\",\"可视化 _ 监控_监控基础.md\":\"ac56ce4d\",\"三高_高并发.md\":\"ea9ffc99\",\"2、数据库_redis_redis高级.md\":\"1d5872f6\",\"1、学前端_4、node_基础篇.md\":\"581cc13a\",\"2、数据库_mongodb_基础.md\":\"fb7a0a29\",\"idea_idea基础.md\":\"6f2f9638\",\"4、微服务_必备_sentinel.md\":\"2edfbf6c\",\"2、数据库_elasticsearch_3、es高级.md\":\"ef146606\",\"1、学前端_3、vue_vue3_vue3新语法.md\":\"8afd5409\",\"消息中间件_canal.md\":\"3949163c\",\"ssm_maven.md\":\"2c5e12ed\",\"4、微服务_springsecurity_高级篇.md\":\"882d3ff3\",\"linux_linux进阶.md\":\"188ef7b4\",\"计算机基础_设计模式_uml.md\":\"634ba256\",\"计算机基础_算法_leetcode.md\":\"77162fb9\",\"项目实战_小兔鲜_进阶篇1.md\":\"17c52c81\",\"1、学前端_2、js_ts_es6 基础.md\":\"fda3f18b\",\"项目实战_小兔鲜_进阶篇2.md\":\"a0f23006\",\"软件测试_测试基础.md\":\"8c1060cd\",\"2、数据库_redis_本地缓存.md\":\"00617fe6\",\"nginx_面试篇.md\":\"e3fb373a\",\"mybatis_mybatisplus_mybatis.md\":\"9239e0ad\",\"linux_shell.md\":\"ae53d83b\",\"2、数据库_mysql_mysql核心_优化.md\":\"36230425\",\"项目实战_项目推荐.md\":\"f9d97630\",\"mybatis_mybatisplus_mybatisplus.md\":\"0030fd35\",\"项目实战_百度地图_进阶篇.md\":\"c8b93267\",\"三高_高可用.md\":\"323840c5\",\"java_java新特性.md\":\"22abf56d\",\"软件测试_压力测试.md\":\"9ab44440\",\"java学前端_html_js.md\":\"e0fcd240\",\"2、数据库_redis_redis实战.md\":\"d6daeeab\",\"nginx_进阶篇.md\":\"e6b63195\",\"三高_秒杀.md\":\"3878bb64\",\"5、运维_git.md\":\"0264925c\",\"java_java进阶.md\":\"e79cb5b4\",\"并发 _ 多线程_基础篇.md\":\"7adbfac5\",\"项目实战_百度地图_基础篇.md\":\"8afa5954\",\"java学前端_react.md\":\"3ec827dd\",\"1、学前端_1、html_css_css基础.md\":\"01b56712\",\"项目实战_小兔鲜_基础篇.md\":\"646f5df5\",\"1、学前端_2、js_ts_js 基础.md\":\"cb13e36f\",\"可视化 _ 监控_监控进阶.md\":\"0cdbc292\",\"计算机基础_设计模式_基础篇.md\":\"51617287\",\"计算机基础_数据结构_基础篇.md\":\"b2bfd8d4\",\"项目实战_苍穹外卖_进阶篇.md\":\"48415e41\",\"ssm_spring.md\":\"ab514659\",\"消息中间件_rabbitmq.md\":\"45b1eb28\",\"1、学前端_1、html_css_网页进阶.md\":\"db998248\",\"消息中间件_kafka.md\":\"b747dabf\",\"云原生_docker.md\":\"983c7ba7\",\"4、微服务_必备_分布式锁.md\":\"5af1cf8d\",\"消息中间件_rocketmq.md\":\"d441da85\",\"项目实战_黑马头条_基础篇.md\":\"b05af3a6\",\"ssm_springmvc.md\":\"81b9714f\",\"项目实战_支付.md\":\"1d7407dd\",\"项目实战_黑马头条_进阶篇2.md\":\"bff0015b\",\"项目实战_黑马头条_进阶篇.md\":\"19f18388\",\"java学前端_vue2_组件.md\":\"58c6b1df\",\"3、springboot_基础篇.md\":\"529c66f4\",\"3、springboot_应用篇.md\":\"8b92aa61\",\"项目实战_黑马头条_高级篇.md\":\"227c08c1\",\"1、学前端_5、小程序_uniapp.md\":\"71a282b4\",\"项目实战_云尚办公_基础篇.md\":\"1fe188ba\",\"并发 _ 多线程_并发完善.md\":\"26619c46\",\"1、学前端_2、js_ts_js 进阶.md\":\"657dfb8f\",\"java_java高级.md\":\"23782d1a\",\"java_java基础.md\":\"86d67c77\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/notebook/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"algolia\":{\"appId\":\"DW7O63I9IR\",\"apiKey\":\"f8ed758cdb288a8b06542bc35923c1a1\",\"indexName\":\"notebook\"},\"sidebar\":[{\"text\":\"Java\",\"collapsed\":true,\"items\":[{\"text\":\"Java基础\",\"link\":\"/Java/Java基础\"},{\"text\":\"Java新特性\",\"link\":\"/Java/Java新特性\"},{\"text\":\"Java进阶\",\"link\":\"/Java/Java进阶\"},{\"text\":\"Java集合\",\"link\":\"/Java/Java集合\"},{\"text\":\"Java高级\",\"link\":\"/Java/Java高级\"}]},{\"text\":\"Linux\",\"collapsed\":true,\"items\":[{\"text\":\"Linux基础\",\"link\":\"/Linux/Linux基础\"},{\"text\":\"Linux新特性\",\"link\":\"/Linux/Linux进阶\"},{\"text\":\"Shell脚本\",\"link\":\"/Linux/Shell\"},{\"text\":\"实用脚本\",\"link\":\"/Linux/实用脚本\"},{\"text\":\"软件部署\",\"link\":\"/Linux/软件部署\"}]},{\"text\":\"Nginx\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/Nginx/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/Nginx/进阶篇\"},{\"text\":\"实战篇\",\"link\":\"/Nginx/实战篇\"},{\"text\":\"面试篇\",\"link\":\"/Nginx/面试篇\"}]},{\"text\":\"SSM\",\"collapsed\":true,\"items\":[{\"text\":\"Maven\",\"link\":\"/SSM/Maven\"},{\"text\":\"Spring\",\"link\":\"/SSM/Spring\"},{\"text\":\"SpringMVC\",\"link\":\"/SSM/SpringMVC\"},{\"text\":\"SpringBatch\",\"link\":\"/SSM/SpringBatch\"}]},{\"text\":\"SpringBoot\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/3、SpringBoot/基础篇\"},{\"text\":\"应用篇\",\"link\":\"/3、SpringBoot/应用篇\"},{\"text\":\"新特性\",\"link\":\"/3、SpringBoot/新特性\"},{\"text\":\"运维&原理\",\"link\":\"/3、SpringBoot/运维&原理\"}]},{\"text\":\"SpringCloud\",\"collapsed\":true,\"items\":[{\"text\":\"SpringCloud\",\"link\":\"/4、微服务/进阶\"},{\"text\":\"Sentinel\",\"link\":\"/4、微服务/必备/Sentinel\"}]},{\"text\":\"SpringSecurity\",\"collapsed\":true,\"items\":[{\"text\":\"SpringSecurity基础篇\",\"link\":\"/4、微服务/SpringSecurity/基础篇\"},{\"text\":\"SpringSecurity进阶篇\",\"link\":\"/4、微服务/SpringSecurity/进阶篇\"},{\"text\":\"SpringSecurity高级篇\",\"link\":\"/4、微服务/SpringSecurity/高级篇\"}]},{\"text\":\"Mybatis & MybatisPlus\",\"collapsed\":true,\"items\":[{\"text\":\"Mybatis\",\"link\":\"/Mybatis&MybatisPlus/Mybatis\"},{\"text\":\"MybatisPlus\",\"link\":\"/Mybatis&MybatisPlus/MybatisPlus\"},{\"text\":\"JPA\",\"link\":\"/Mybatis&MybatisPlus/JPA\"}]},{\"text\":\"Git & ChatGPT\",\"collapsed\":true,\"items\":[{\"text\":\"Git\",\"link\":\"/5、运维/Git\"},{\"text\":\"Github\",\"link\":\"/5、运维/Github\"},{\"text\":\"ChatGPT\",\"link\":\"/5、运维/ChatGPT\"},{\"text\":\"Jenkins\",\"link\":\"/5、运维/Jenkins\"},{\"text\":\"Netty\",\"link\":\"/5、运维/Netty\"}]},{\"text\":\"数据库\",\"collapsed\":true,\"items\":[{\"text\":\"MySQL\",\"collapsed\":true,\"items\":[{\"text\":\"MySQL基础\",\"link\":\"/2、数据库/MySQL/MySQL核心/基础\"},{\"text\":\"MySQL进阶\",\"link\":\"/2、数据库/MySQL/MySQL核心/进阶\"},{\"text\":\"MySQL优化\",\"link\":\"/2、数据库/MySQL/MySQL核心/优化\"},{\"text\":\"MySQL设计\",\"link\":\"/2、数据库/MySQL/MySQL核心/设计\"},{\"text\":\"MySQL运维\",\"link\":\"/2、数据库/MySQL/MySQL核心/运维\"},{\"text\":\"分库分表\",\"link\":\"/2、数据库/MySQL/分库分表\"}]},{\"text\":\"Redis\",\"collapsed\":true,\"items\":[{\"text\":\"Redis基础\",\"link\":\"/2、数据库/Redis/Redis基础\"},{\"text\":\"Redis优化\",\"link\":\"/2、数据库/Redis/Redis优化\"},{\"text\":\"Redis原理\",\"link\":\"/2、数据库/Redis/Redis原理\"},{\"text\":\"Redis高级\",\"link\":\"/2、数据库/Redis/Redis高级\"},{\"text\":\"Redis实战\",\"link\":\"/2、数据库/Redis/Redis实战\"},{\"text\":\"本地缓存\",\"link\":\"/2、数据库/Redis/本地缓存\"}]},{\"text\":\"MongoDB\",\"collapsed\":true,\"items\":[{\"text\":\"MongoDB基础\",\"link\":\"/2、数据库/MongoDB/基础\"},{\"text\":\"MongoDB进阶\",\"link\":\"/2、数据库/MongoDB/整合\"}]},{\"text\":\"ElasticSearch\",\"collapsed\":true,\"items\":[{\"text\":\"ES基础\",\"link\":\"/2、数据库/ElasticSearch/1、ES基础\"},{\"text\":\"ES高级\",\"link\":\"/2、数据库/ElasticSearch/3、ES高级\"}]},{\"text\":\"InfluxDB\",\"link\":\"/2、数据库/influxdb\"},{\"text\":\"Neo4j\",\"link\":\"/2、数据库/Neo4j\"}]},{\"text\":\"高并发 & 秒杀 & 分布式\",\"collapsed\":true,\"items\":[{\"text\":\"分布式理论\",\"link\":\"/三高/分布式\"},{\"text\":\"分布式锁\",\"link\":\"/4、微服务/必备/分布式锁\"},{\"text\":\"秒杀\",\"link\":\"/三高/秒杀\"},{\"text\":\"高可用\",\"link\":\"/三高/高可用\"},{\"text\":\"高并发\",\"link\":\"/三高/高并发\"}]},{\"text\":\"云原生\",\"collapsed\":true,\"items\":[{\"text\":\"Docker\",\"link\":\"/云原生/Docker\"},{\"text\":\"K8S\",\"link\":\"/云原生/K8S\"}]},{\"text\":\"可视化 & 监控\",\"collapsed\":true,\"items\":[{\"text\":\"监控基础\",\"link\":\"/可视化 & 监控/监控基础\"},{\"text\":\"监控进阶\",\"link\":\"/可视化 & 监控/监控进阶\"},{\"text\":\"可视化大屏\",\"link\":\"/可视化 & 监控/可视化大屏\"},{\"text\":\"Zabbix\",\"link\":\"/可视化 & 监控/Zabbix\"}]},{\"text\":\"学前端\",\"collapsed\":true,\"items\":[{\"text\":\"HTML+CSS\",\"collapsed\":true,\"items\":[{\"text\":\"HTML基础\",\"link\":\"/1、学前端/1、HTML+CSS/HTML基础\"},{\"text\":\"CSS基础\",\"link\":\"/1、学前端/1、HTML+CSS/CSS基础\"},{\"text\":\"网页进阶\",\"link\":\"/1、学前端/1、HTML+CSS/网页进阶\"}]},{\"text\":\"JS+TS\",\"collapsed\":true,\"items\":[{\"text\":\"JS基础\",\"link\":\"/1、学前端/2、JS+TS/JS 基础\"},{\"text\":\"JS进阶\",\"link\":\"/1、学前端/2、JS+TS/JS 进阶\"},{\"text\":\"ES6基础\",\"link\":\"/1、学前端/2、JS+TS/ES6 基础\"},{\"text\":\"ES6进阶\",\"link\":\"/1、学前端/2、JS+TS/ES6 进阶\"},{\"text\":\"TS基础\",\"link\":\"/1、学前端/2、JS+TS/TypeScript\"}]},{\"text\":\"NodeJS\",\"collapsed\":true,\"items\":[{\"text\":\"Node基础\",\"link\":\"/1、学前端/4、Node/基础篇\"},{\"text\":\"Node进阶\",\"link\":\"/1、学前端/4、Node/进阶篇\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/4、Node/项目实战\"}]},{\"text\":\"Vue\",\"collapsed\":true,\"items\":[{\"text\":\"Vue3进阶\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3进阶\"},{\"text\":\"Vue3高级\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3高级\"},{\"text\":\"Vue3新语法\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3新语法\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/3、Vue/Vue2/Vue2项目\"}]},{\"text\":\"小程序\",\"collapsed\":true,\"items\":[{\"text\":\"小程序基础\",\"link\":\"/1、学前端/5、小程序/微信小程序\"},{\"text\":\"小程序优化\",\"link\":\"/1、学前端/5、小程序/小程序优化\"},{\"text\":\"uniapp\",\"link\":\"/1、学前端/5、小程序/uniapp\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/5、小程序/小程序项目\"}]}]},{\"text\":\"计算机基础\",\"collapsed\":true,\"items\":[{\"text\":\"数据结构\",\"link\":\"/计算机基础/数据结构/基础篇\"},{\"text\":\"操作系统\",\"link\":\"/计算机基础/计算机基础/操作系统\"},{\"text\":\"设计模式\",\"link\":\"/计算机基础/设计模式/基础篇\"},{\"text\":\"计算机网络\",\"link\":\"/计算机基础/计算机网络/网络基础\"},{\"text\":\"UML\",\"link\":\"/计算机基础/设计模式/UML\"},{\"text\":\"LeetCode\",\"link\":\"/计算机基础/算法/LeetCode\"}]},{\"text\":\"项目实战\",\"collapsed\":true,\"items\":[{\"text\":\"云尚办公\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/云尚办公/基础篇\"}]},{\"text\":\"小兔鲜\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/小兔鲜/基础篇\"},{\"text\":\"进阶篇1\",\"link\":\"/项目实战/小兔鲜/进阶篇1\"},{\"text\":\"进阶篇2\",\"link\":\"/项目实战/小兔鲜/进阶篇2\"}]},{\"text\":\"地图\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/百度地图/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/项目实战/百度地图/进阶篇\"}]},{\"text\":\"苍穹外卖\",\"collapsed\":true,\"items\":[{\"text\":\"进阶篇\",\"link\":\"/项目实战/苍穹外卖/进阶篇\"}]},{\"text\":\"黑马头条\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/黑马头条/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/项目实战/黑马头条/进阶篇\"},{\"text\":\"进阶篇2\",\"link\":\"/项目实战/黑马头条/进阶篇2\"},{\"text\":\"高级篇\",\"link\":\"/项目实战/黑马头条/高级篇\"}]},{\"text\":\"支付\",\"link\":\"/项目实战/支付\"},{\"text\":\"项目推荐\",\"link\":\"/项目实战/项目推荐\"}]},{\"text\":\"团队成员\",\"link\":\"/team\"}],\"siteTitle\":\"任硕的文档\",\"logo\":\"/Vue.png\",\"nav\":[{\"text\":\"Java学前端\",\"items\":[{\"items\":[{\"text\":\"HTML+JS\",\"link\":\"/Java学前端/HTML+JS\"},{\"text\":\"CSS\",\"link\":\"/Java学前端/CSS\"},{\"text\":\"Vue2+组件\",\"link\":\"/Java学前端/Vue2+组件\"},{\"text\":\"Vue3+组件\",\"link\":\"/Java学前端/Vue3+组件\"},{\"text\":\"React\",\"link\":\"/Java学前端/React\"}]}],\"activeMatch\":\"/Java/\"},{\"text\":\"软件测试\",\"items\":[{\"items\":[{\"text\":\"测试基础\",\"link\":\"/软件测试/测试基础\"},{\"text\":\"压力测试\",\"link\":\"/软件测试/压力测试\"}]}]},{\"text\":\"多线程\",\"items\":[{\"items\":[{\"text\":\"基础篇\",\"link\":\"/并发 & 多线程/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/并发 & 多线程/并发完善\"}]}]},{\"text\":\"开发工具\",\"items\":[{\"items\":[{\"text\":\"Chrome\",\"link\":\"/IDEA/Chrome\"},{\"text\":\"IDEA基础\",\"link\":\"/IDEA/IDEA基础\"},{\"text\":\"IDEA插件\",\"link\":\"/IDEA/IDEA插件\"},{\"text\":\"VS Code\",\"link\":\"/IDEA/VS Code\"}]}]},{\"text\":\"消息中间件\",\"items\":[{\"items\":[{\"text\":\"RabbitMQ\",\"link\":\"/消息中间件/RabbitMQ\"},{\"text\":\"RocketMQ\",\"link\":\"/消息中间件/RocketMQ\"},{\"text\":\"Kafka\",\"link\":\"/消息中间件/Kafka\"},{\"text\":\"Canal\",\"link\":\"/消息中间件/Canal\"}]}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/renshuo123/renshuo123.github.io\"},{\"icon\":\"twitter\",\"link\":\"#\"},{\"icon\":{\"svg\":\"<svg t=\\\"1676028692954\\\" class=\\\"icon\\\" ...</path></svg>\"},\"link\":\"https://github.com/\"}]},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":false}");</script>
    
  </body>
</html>